Flask-Socket.IO CORS issue

Flask-Socket.IO CORS issue

本文关键字:issue CORS IO Flask-Socket      更新时间:2023-09-26

我在使用socket.io 连接到Flask应用程序时遇到此错误

得到http://127.0.0.1:5000/socket.io/?EIO=3&transport=轮询&t=1450525025659-286 Request.create@socket.io.js:2919Request@socket.eo.js:2842XHR.Request@socket.io.js:2773HR.doPoll@socket.ino.js:2803Polling.poll@socket.mio.js:3192Polling.doOpen@socket.no.js:3316transport.open@socket.ao.js:2231Socket.open@ssocket.io.js:1743Socket@socket[io.js:11625Socket@sockt.io.js:1560Manager.open.Manager.connect@socket.oo.js:299(匿名函数)@socket.io.js:564:3004/:1 XMLHttpRequest无法加载http://127.0.0.1:5000/socket.io/?EIO=3&transport=轮询&t=1450525025659-286。请求的资源上不存在"Access Control Allow Origin"标头。原点'http://localhost:3004因此不允许访问。响应的HTTP状态代码为500。

我试过这个解决方案

@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']
    }
})

并且没有增益。如有任何帮助,将不胜感激

这是socket.io-client库问题。我使用FlaskSocket.IO文档建议的v1.3.7,但它不起作用,但更改Socket.IO-client.js的版本效果很好。

http://flask-socketio.readthedocs.org/en/latest/#upgrading-从旧版到仓库仓库-1-x

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

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

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