繁体   English   中英

Flask-socketio-未能设置“ Access-Control-Allow-Origin”响应头

[英]Flask-socketio - failed to set “Access-Control-Allow-Origin” response header

我写了这个简单的flask-socketio代码:

from flask import Flask
from flask_socketio import SocketIO, send

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecret'

socketio = SocketIO(app)


@socketio.on('message')
def handle_message(msg):
    print 'Message:' + msg
    send(msg, broadcast=True)


if __name__ == '__main__':
    socketio.run(app)

当我看到Chrome网络分析时,可以看到“ Access-Control-Allow-Origin”值为null

根据Flask-socketio文档:(请参阅API Reference @ http://flask-socketio.readthedocs.io/en/latest/

Parameters:
...
cors_allowed_origins – List of origins that are allowed to connect to this server. All origins are allowed by default.

我在搜索flask-CORS发现的另一个建议是使用flask-CORS

app.config['SECRET_KEY'] = 'mysecret'
cors = CORS(app)

socketio = SocketIO(app)

我得到相同的结果。

用flask-socketio允许跨域请求的方法是什么?

提前致谢。

下面为我​​解决。 来自Angular应用程序的交互。

socketio = SocketIO(app, cors_allowed_origins="*")

交叉原点默认情况下在Flask-SocketIO上启用。 我的猜测是,您对此进行测试的方式存在缺陷。 在运行示例应用程序时,我可以向Socket.IO主端点发送请求,并在响应中得到Access-Control-Allow-Origin标头:

~ $ http http://localhost:5000/socket.io/
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 119
Content-Type: application/octet-stream
Date: Fri, 01 Jun 2018 17:10:01 GMT
Set-Cookie: io=dd8d67788df54510830fea64bc82b1fd



+-----------------------------------------+
| NOTE: binary data not shown in terminal |
+-----------------------------------------+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM