Javascript 铬合金中flask-socket.io的CORS错误

Javascript 铬合金中flask-socket.io的CORS错误,javascript,flask,socket.io,cors,flask-socketio,Javascript,Flask,Socket.io,Cors,Flask Socketio,因此,我试图使用flask-socket.io构建一个基本的聊天应用程序,但遇到了一些奇怪的错误 服务器 from flask import Flask, render_template from flask_socketio import SocketIO app = Flask(__name__) app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#' socketio = SocketIO(app, cors_allowed_origins="*"

因此,我试图使用flask-socket.io构建一个基本的聊天应用程序,但遇到了一些奇怪的错误

服务器

from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#'
socketio = SocketIO(app,  cors_allowed_origins="*")

@app.route('/')
def sessions():
    return render_template('session.html')

def messageReceived(methods=['GET', 'POST']):
    print('message was received!!!')

@socketio.on('my event')
def handle_my_custom_event(json, methods=['GET', 'POST']):
    print('received my event: ' + str(json))
    socketio.emit('my response', json, callback=messageReceived)

if __name__ == '__main__':
    socketio.run(app, debug=True, port=5002)
Session.html

 <!DOCTYPE html>
  <html lang="en">
  <head>
    <title>Flask_Chat_App</title>
  </head>
  <body>

    <h3 style='color: #ccc;font-size: 30px;'>No message yet..</h3>
    <div class="message_holder"></div>

    <form action="" method="POST">
      <input type="text" class="username" placeholder="User Name"/>
      <input type="text" class="message" placeholder="Messages"/>
      <input type="submit"/>
    </form>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
    <script type="text/javascript">
      var socket = io.connect('http://' + document.domain + ':' + location.port);
      socket.on( 'connect', function() {
        socket.emit( 'my event', {
          data: 'User Connected'
        } )
        var form = $( 'form' ).on( 'submit', function( e ) {
          e.preventDefault()
          let user_name = $( 'input.username' ).val()
          let user_input = $( 'input.message' ).val()
          socket.emit( 'my event', {
            user_name : user_name,
            message : user_input
          } )
          $( 'input.message' ).val( '' ).focus()
        } )
      } )
      socket.on( 'my response', function( msg ) {
        console.log( msg )
        if( typeof msg.user_name !== 'undefined' ) {
          $( 'h3' ).remove()
          $( 'div.message_holder' ).append( '<div><b style="color: #000">'+msg.user_name+'</b> '+msg.message+'</div>' )
        }
      })
    </script>

  </body>
  </html>
我已尝试按照其他地方的建议将cors_allowed_origins=[]和cors_allowed_origins=“*”添加到服务器,但没有任何改变。奇怪的是,它在InternetExplorer中工作,但在chrome中不工作

我还尝试添加cor(app,resources={r/:{“origins”:“}})

有人有过类似的经历吗?

很快

我们有“禁用web安全”命令行选项来运行Chrome

--disable-web-security
此外,我们还可以在为api提供服务的服务器上启用CORS

Access-Control-Allow-Origin: * 

您的客户端正在尝试连接到URL
https://socket.io/
,您可以在CORS错误消息中看到

这不是Socket.IO服务器的URL,它实际上是Socket.IO的官方网站。您需要改进客户端的逻辑,以便为您的服务使用正确的连接URL,您在此处所做的操作不适用于本地HTML文件:

var socket = io.connect('http://' + document.domain + ':' + location.port);
尝试硬编码您的服务器地址:

var socket = io.connect('http://localhost:5002');
var socket = io.connect('http://localhost:5002');