Flask-SocketIO и 400 неверных запросов - PullRequest
0 голосов
/ 03 марта 2019

Я использую приложение Flask с socketio для работы с уведомлениями.Приложение 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 (приложение) на своей фабрике приложений.

Я также пыталсядобавив это в один из моих чертежей:

@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;
}

Что не так?Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Проблема заключалась в том, что я добавлял исходный хост с http вместо https.Все работает нормально.

...