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
当我尝试从客户端发送请求到部署在 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