Какие заголовки Access-Control- * нужно отправить обратно в ответ на запрос OPSS предполетной проверки CORS, а затем последующие GET / POST / и т.д. запрос? - PullRequest
1 голос
/ 11 ноября 2019

Я настраиваю настраиваемый рабочий процесс авторизации на API-шлюзе и ищу информацию о CORS.

У меня есть авторизатор, который возвращает роль IAM на основе проверки barertoken - который затем вызывает лямбда-выражение myконечная точка назначения, которая возвращает желаемый ответ.

Я выполнил эту работу, добавив свой маркер barer как в метод OPTIONS, так и в методы GET / POST.

В целом, я добавляю большинство заголовков CORS к методам OPTIONS + GET / POST / etc, но это кажется излишним.

Я немного не в себе здесь, но интуитивно - если мне нужно добавить те же самые заголовки в моем методе OPTIONS и целевом методе, я думаю, что AWS просто объединит заголовки из целевых методов в конфигурацию параметров предварительной проверки, поэтому я предполагаю, что добавляю заголовкигде-то излишне, но я не уверен.

Может ли кто-нибудь предоставить обзор / обзор того, как заголовки передаются через API-шлюз при вызове API-интерфейса CORS?

пример информации:

endpoint: api.example.com/logout
methods: OPTIONS, GET

В настоящее время у меня есть: OPTIONS / GET:

request headers:
 > barerToken
response headers: 
 > set-Cookie: integration.response.body.payload.httpCookie
 > Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,barerToken'
 > Access-Control-Allow-Origin: 'https://example.com'
 > Access-Control-Allow-Credentials: 'true'
 > set-cookie: integration.response.body.payload.cookie
 > Access-Control-Allow-Methods: 'OPTIONS,POST'

Моя интуиция говорит, что мне нужно только следующее:OPTIONS:

request headers:
 > barerToken
response headers:
 > Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,barerToken'
 > Access-Control-Allow-Origin: 'https://example.com'
 > Access-Control-Allow-Credentials: 'true'
 > Access-Control-Allow-Methods: 'OPTIONS,POST'

GET:

response headers: 
 > set-Cookie: integration.response.body.payload.httpCookie
 > set-cookie: integration.response.body.payload.cookie

Насколько я понимаю, поток выглядит следующим образом:Browser (Preflight) -> End Point (OPTIONS) -> Browser (Request) -> Authorizer Lambda -> End Point (GET) -> Browser (Response)

ИЛИ

Browser (Preflight) -> Authorizer Lambda -> End Point (OPTIONS) -> Browser (Request) -> End Point (GET) -> Browser (Response)

Но я могу легко ошибиться.

Наконец, должен ли я применять авторизатор только к методу OPTIONS или его следует применять к OPTIONS и GET методов? Каковы преимущества / недостатки одного против обоих?

...