только запрос ОПЦИИ отправляется с ответом 200 - PullRequest
0 голосов
/ 07 января 2019

Моя ситуация немного похожа на этот вопрос , но он немного отличается, и нет ответа.

Мой бэкэнд это python, а front-end это Angular. Live-сервер - это Ngnix / Unix, а dev - это Windows. Каждый запрос просто отправляет запрос OPTIONS, с успешным ответом 200, но затем GET / POST не выполняются. Он работал отлично, и только на производственном сервере он не работает. В консоли нет ошибок CORS, а backend является отладочным = True для проверки, но не для проблем, поскольку очевидно, что get / post не выполняется.

На разрабатывающей машине все работает. Предыдущая команда добавила пользовательский заголовок «language»:

const clonedRequest = req.clone({ headers: req.headers.set('Language', lang) });

, который я заметил, никогда не отправляется при подключении к живому. В настройках разработки я вижу следующие заголовки:

Accept application/json
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
Content-Length 21
Content-Type application/json
Host 127.0.0.1:9000
Language en
Origin http://localhost:4800

Referer http://localhost:4800/start/forgot-pwd

При подключении к продукту из внешнего интерфейса (в разработке или в производстве) заголовок Language не отправляется, но я сомневаюсь, что у него есть проблемы. Несмотря на это, мой CORS на бэкэнде выглядит так:

CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'language',
    'x-requested-with',
)

1 Ответ

0 голосов
/ 07 января 2019

Вам необходимо внести в белый список определенные источники. Использование коршедеров , таких как:

CORS_ORIGIN_WHITELIST = [
    'localhost:4800',
    '127.0.0.1:4800'
]

Вам также необходимо добавить промежуточное ПО сразу после SecurityMiddleware

'corsheaders.middleware.CorsMiddleware',

И вам также нужно добавить 'corsheaders', к вам INSTALLED_APPS.

Кроме того, вы можете просто установить CORS_ALLOW_CREDENTIALS = True и в дополнение к тому, что я перечислил выше, чтобы CORS работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...