App 引擎,Flask-Socketio 服务器 Cors_Allowed_Origins header 丢失

App engine, Flask-Socketio server Cors_Allowed_Origins header is missing

当我尝试从客户端发送请求到部署在 App Engine 上的 socketio flask 服务器时,我收到以下错误:

已被 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' header。

我确实在我的 python 服务器脚本中添加了以下行:

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

我还添加了以下行:

CORS(app)

我做错了什么?

我尝试用 url 处理程序的 Allow_cors_origin 更改 app.yaml,安装 flask-cors 包,没有任何效果

编辑: 我在调试时在应用引擎中发现以下消息:

{ "textPayload": "客户端正在使用不受支持的 Socket.IO 或 Engine.IO 协议版本(此错误的进一步发生将使用 INFO 级别记录)", "insertId": "5fca5af900064b8faf6f9267", “资源”:{ “类型”:“gae_app”, “标签”: { "module_id": "默认", "project_id": "island-battles", "version_id": "20201204t174848", “区域”:“欧洲-west6-3” } }, “时间戳”:“2020-12-04T15:51:21.412559Z”, “标签”: { “clone_id”:“00c61b117cf0689fb08fabba9037f4624c77b480da8e9472be2b02038e0fe7d2d8dcac81021c” }, "logName": "projects/island-battles/logs/stderr", “接收时间戳”:“2020-12-04T15:51:21.465294012Z” }

我该如何解决这个问题?谢谢

第二次编辑: 在我的本地版本中一切正常,问题出在应用引擎

此错误是由于不支持的套接字 IO 版本造成的。我想你正在使用 latest version, however, App Engine usually takes some time to support the latest versions. Try downgrading 到 v3.x,甚至 v2.x。

您可以使用 $ pip install <PACKAGE>==<VERSION> 安装特定版本的软件包,在本例中,例如:$ pip install python-socketio==3.1.2.

如果您使用的是 Flask-SocketIO,请确保安装兼容版本,最新版本与 python-socketio 3.1.2 不兼容,您将收到错误消息。

我运行:

pip install python-socketio==3.1.2 

按照 Oliver 的建议但是有错误因为我有 Flask-SocketIO 版本 5.0.1,所以我 运行 以下内容:

pip install flask-socketio==4.3.2

这解决了我的问题。

最终你会想要 flask-socketio-4.3.2 python-engineio-3.14.2 python-socketio-4.6.1

这里得出了类似的结论: https://github.com/miguelgrinberg/Flask-SocketIO/issues/1432 https://github.com/juharris/switch-remoteplay/issues/37