3

Я создал ресурс APIGateway с помощью метода Lambda Proxy POST и метод OPTIONS для заголовков CORS.AWS APIGateway CORS для прокси-сервера Lambda не применяется

Метод OPTIONS возвращает эти заголовки:

$ curl -i -X OPTIONS https://xxxxxxxxx.execute-api.eu-central-1.amazonaws.com/dev/endpoint1 

HTTP/1.1 200 OK 
Content-Type: application/json 
Content-Length: 0 
Connection: keep-alive 
Date: Sat, 18 Feb 2017 17:07:17 GMT 
x-amzn-RequestId: xxxx 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token 
Access-Control-Allow-Methods: POST,OPTIONS 
X-Cache: Miss from cloudfront 
Via: 1.1 xxxx.cloudfront.net (CloudFront) 
X-Amz-Cf-Id: xxxx== 

Но когда я называю POST конечную точку с генерируемой Javascript SDK, консоль браузера Chrome показывает эту ошибку:

XMLHttpRequest cannot load https://xxxx.execute-api.eu-central-1.amazonaws.com/dev/endpoint1. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:8080' is therefore not allowed access. 

, а также Firefox :

Cross-Origin Request Blocked: 
The Same Origin Policy disallows reading the remote resource at https://xxxx.execute-api.eu-central-1.amazonaws.com/dev/endpoint1. 
(Reason: CORS header ‘Access-Control-Allow-Origin’ missing). 

Почему m y Заголовок CORS не учитывается? Требуются ли дополнительные изменения настроек метода POST?

+0

Вы не можете ожидать, CORS работать с «локальный», предположительно потому, что это подделка, и ваш браузер знает. Проверьте свой сайт с помощью 'http: // lvh.me' или' http: // www.127.0.0.1.xip.io'. Это псевдонимы для localhost, но ваш браузер этого не знает. –

ответ

5

Кажется, что необходимо добавить заголовки вручную в функцию лямбда.

В случае NodeJS скрипт будет выглядеть следующим образом:

context.succeed({ 
    "statusCode": 200, 
    "headers": { 
     "X-Requested-With": '*', 
     "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', 
     "Access-Control-Allow-Origin": '*', 
     "Access-Control-Allow-Methods": 'POST,GET,OPTIONS' 
    }, 
    "body": JSON.stringify(response) 
}) 
0

Пожалуйста, проверьте ниже пунктов.

  1. Разверните ли вы обновленный API?
  2. Вы создали метод OPTIONS для своего ресурса API?
  3. Вы добавили заголовки ответа для метода Response метода OPTIONS, как показано ниже?
    • Access-Control-Allow-Headers
    • Access-Control-Allow-методы
    • Access-Control-Allow-Origin
  4. Выполнена ли 'Включить Корс' действия на вашем API ресурсов ?
  5. После завершения проверки, пожалуйста, проверьте метод метода GET/POST вашего ресурса API. Возможно, HTTP-заголовок Access-Control-Allow-Origin автоматически добавлен API Gateway.

Спасибо, Daniel

Смежные вопросы