gpt4 book ai didi

python - Flask-SocketIO 和 400 错误请求

转载 作者:行者123 更新时间:2023-12-04 14:31:22 26 4
gpt4 key购买 nike

我正在使用 socketio 运行 Flask 应用程序来处理通知。
Flask 应用程序正在监听端口 5000,而客户端在 8080。

js 客户端总是收到这个错误:

VM15520:1 GET http://localhost:5000/socket.io/?EIO=3&transport=polling&t=Mb2_LpO 400 (Bad Request)
Access to XMLHttpRequest at 'http://localhost:5000/socket.io/?EIO=3&transport=polling&t=Mb2_LpO' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我实际上是用 gunicorn 启动我的应用程序的,如下所示:
gunicorn --workers=1 --worker-class eventlet --certfile=keys/key.crt --keyfile=keys/key.key --bind 0.0.0.0:5000 myapp.run:app

这是我的 run.py:
import eventlet
from myapp import create_app
eventlet.monkey_patch()
app, celery = create_app('config_prod.py')

我也在我的应用工厂中使用 CORS(app)。

我还尝试将其添加到我的一张蓝图中:
@api.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', 'http://localhost:8080')
response.headers.add('Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
response.headers.add('Access-Control-Allow-Credentials', 'false')
return response

我使用 nginx 作为反向代理,因此我尝试添加我在flask-socketio 的文档中看到的相应配置:
location /socket.io {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass https://my_backend_host/socket.io;
}

怎么了?
谢谢!

最佳答案

我在 React Flask-SocketIO 上遇到了类似的 400 问题,这个问题是由于 CORS 错误造成的。
flask 中的以下代码解决了我的问题,

socketio = SocketIO(app)
socketio.init_app(app, cors_allowed_origins="*")
还要确保您使用的是 eventletgevent-websocket当您选择 [websocket] 在您的服务器中只有运输。 Gevent没有 websocket 支持,所以只适用于 HTTP 轮询回退。

关于python - Flask-SocketIO 和 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54967708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com