-1

使用 socket.io 连接到我的 Flask 应用程序时出现此错误

GET http://127.0.0.1:5000/socket.io/?EIO=3&transport=polling&t=1450525025659-286 Request.create@socket.io.js:2919Request@socket.io.js:2842XHR.request@socket.io .js:2773XHR.doPoll@socket.io.js:2803Polling.poll@socket.io.js:3192Polling.doOpen@socket.io.js:3136Transport.open@socket.io.js:2313Socket.open@socket.io .js:1743Socket@socket.io.js:1625Socket@socket.io.js:1560Manager.open.Manager.connect@socket.io.js:299(匿名函数)@socket.io.js:564:3004/: 1 XMLHttpRequest 无法加载http://127.0.0.1:5000/socket.io/?EIO=3&transport=polling&t=1450525025659-286。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ http://localhost:3004 ”。

我试过这个解决方案

@app.after_request
def add_cors(resp):
    resp.headers['Access-Control-Allow-Origin'] = request.headers.get('Origin','*')
    resp.headers['Access-Control-Allow-Credentials'] = 'true'
    resp.headers['Access-Control-Allow-Methods'] = 'POST, OPTIONS, GET'
    resp.headers['Access-Control-Allow-Headers'] = request.headers.get(
    'Access-Control-Request-Headers', 'Authorization')
    return resp

但它没有用。我也试过 Flask-Cors 模块

CORS(app, resources={
    r'/*/*': {
        'origins': '*',
        'allow_headers': ['Content-Type', 'Authorization']
    }
})

并没有收获。任何帮助,将不胜感激

4

1 回答 1

0

这是socket.io-client图书馆的问题。我按照 Flask-Socket.IO 文档的建议使用v1.3.7它不起作用,但更改socket.io-client.js的版本它工作正常。

http://flask-socketio.readthedocs.org/en/latest/#upgrading-to-flask-socketio-1-x-from-older-releases

从旧版本升级到 Flask-SocketIO 1.x

在客户端,您需要将 Socket.IO Javascript 客户端从 0.9.x 版本升级到 1.3.x 或更新版本。

但我不知道为什么它在我使用时对我Flask-SocketIO==1.2不起作用socket.io-client@v1.3.7

于 2015-12-19T13:21:08.530 回答