Почему он был заблокирован политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: он не имеет статуса HTTP ok.? - PullRequest
0 голосов
/ 08 ноября 2019

Я следовал руководству по адресу:

https://serverless.com/blog/cors-api-gateway-survival-guide/

Чтобы создать бэкэнд-сервис с помощью serverless, lambda, nodejs. Конечная точка работает правильно при тестировании с почтальоном.

Ниже заголовков запросов, как они установлены (я пытался включить все, чтобы выяснить проблему).

General:
Request Method: OPTIONS
Status Code: 400 
Remote Address: xxx.xxx.xxx.xxx:443
Referrer Policy: no-referrer-when-downgrade

Response Headers:
access-control-allow-credentials: true
access-control-allow-headers: Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Allow-Origin, Access-Control-Allow-Credentials
access-control-allow-origin: *
content-length: 97
content-type: application/json
date: Fri, 08 Nov 2019 16:26:15 GMT
status: 400
via: 1.1 xxxxxxx.cloudfront.net (CloudFront)
x-amz-apigw-id: xxxxxxxx=
x-amz-cf-id: xxxxxx-EFTU2MF4k_TQ==
x-amz-cf-pop: xxxxx-C1
x-amzn-requestid: xxxxxxx-85a7-4d61-bf42-081944a4d307
x-amzn-trace-id: Root=1-xxxxxxx-37555e2ccf9ab35021c26f98;Sampled=0
x-cache: Error from cloudfront

Request headers
:authority: xxxxxx.execute-api.eu-west-1.amazonaws.com
:method: OPTIONS
:path: /stg/getConfigUrl
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9,it;q=0.8
access-control-request-headers: access-control-allow-headers,access-control-allow-methods,access-control-allow-origin,content-type
access-control-request-method: POST
cache-control: no-cache
origin: http://0.0.0.0:8017
pragma: no-cache
referer: http://0.0.0.0:8017/
sec-fetch-mode: cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 ....

Я думаюнеобходимые заголовки запроса предварительной проверки установлены. Я не понимаю эту ошибку. Что на самом деле означает, что «у него нет статуса HTTP ok»?

Попытка с почтальоном (тот же запрос) отвечает на HTTP 200 OK. Но вот через браузер кажется, что OPTION-запрос отвечает 400 ... почему? Как я могу это исправить?

1 Ответ

0 голосов
/ 08 ноября 2019

Обычно ваш браузер перед выполнением правильного XHR-запроса, закодированного на сайте, который вы посещаете, спрашивает «Ну, я в localhost (или web.com)», а затем запрашивает сайт, на который указывает запрос «Эй, какие варианты мне нужно вам позвонить? »после, если сайт хорошо настроен, он может ответить, например,« Итак, я разрешаю запросы от collsite.com, но только если вы хотите получить или POST, тогда я позволю вампришлите мне все HTTP заголовки, которые вы хотите »и ваш браузер« Хорошо, хорошо! Я проверю этот запрос и обеспечу выполнение этих правил для вас! »Технически, сначала выполняется пустой запрос с глаголом «OPTIONS», на который указывает запрос сайта. После этого он «поймает» определенные заголовки HTTP и проверит его содержимое, где происходит этот «разговор». Например, «Access-Control-Allow-Origin», которому разрешено вызывать домены, или «Access-Control-Allow-Methods» имеет разрешенные методы, которые эти домены могут использовать для вызова и т. Д., Эти и другие заголовки отвечают заразрешить или не разрешить известный «CORS».

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