当我试图从客户端向部署在应用程序引擎上的socketio flask服务器发送请求时,我收到以下错误:
已被CORS策略阻止:请求的资源上不存在"Access Control Allow Origin"标头。
我确实在我的python服务器脚本中放了以下行:
socketio = SocketIO(app, cors_allowed_origins='*')
我还添加了愚蠢的行:
CORS(app)
我做错了什么?
我试着用url处理程序的Allow_cors_origin更改app.yaml,安装flask cors包,但什么都不起作用
编辑:调试时,我在应用程序引擎中发现了以下消息:
{"text有效载荷":"客户端正在使用不受支持的套接字版本。IO或引擎。IO协议(该错误的进一步发生将用级别INFO记录(";,"insertId":"5fca5af900064b8faf6f9267〃;,"资源":{"类型":"gae_ app";,"标签":{"module_id":"默认";,"project_id":"岛屿之战";,"版本id":"20201204t174848〃;,"区域":"欧洲西部6-3";}},"时间戳":"2020-12-04T15:51:21.412559Z";,"标签":{"clone_id":"00c61b117cf0689fb08fabba9037f4624c77b480da8e9472be2b0038e0fe7d8dcac81021c";},"logName":"项目/岛屿战斗/日志/stderr";,"receiveTimestamp":"2020-12-04T15:51:21.465294012Z";}
我该如何解决这个问题?感谢
第二次编辑:在我的本地版本中一切都很好,问题在于应用程序引擎
如果您使用的是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-shocktio-4.3.2蟒蛇引擎-3.14.2蟒蛇套接字-4.6.1
这里得出了类似的结论:https://github.com/miguelgrinberg/Flask-SocketIO/issues/1432https://github.com/juharris/switch-remoteplay/issues/37
此错误是由不支持的Socket IO版本引起的。我想你使用的是最新版本,然而,应用程序引擎通常需要一些时间来支持最新版本。尝试将其降级为v3.x,甚至可能是v2.x。
您可以使用$ pip install <PACKAGE>==<VERSION>
安装特定版本的软件包,在这种情况下,例如:$ pip install python-socketio==3.1.2
。
Bycors_allowed_origins选项
对于examplehttp://127.0.0.1:8283,server.py脚本
sio = socketio.Server(cors_allowed_origins='http://127.0.0.1:8283')