AWS Лямбда + API шлюза + Реагировать JS - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь отправить сообщение в свою DynamoDB, используя реакцию, однако получаю следующую ошибку:

Access to fetch at 'https://xxxxx.execute-api.us-west-2.amazonaws.com/prod/getuserprofile' from 
origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' 
header is present on the requested resource. If an opaque response serves your needs, set the 
request's mode to 'no-cors' to fetch the resource with CORS disabled.

Сначала я проверил, работает ли этот метод с помощью лямбда-теста.

I также использовали curl -v -X OPTIONS https://xxxx.execute-api.us-west-2.amazonaws.com/prod/getuserprofile, и его вывод был:

`< HTTP/2 200
< date: 
< content-type: application/json
< content-length: 0
< x-amzn-requestid:
< access-control-allow-origin: *
< access-control-allow-headers: Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token
< x-amz-apigw-id:
< access-control-allow-methods: DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT`

Однако, когда я пытаюсь отреагировать. js функция выборки, она выдает ошибку.

fetch("https://xxxx.execute-api.us-west-2.amazonaws.com/prod/getuserprofile", {
  method: 'PUT',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },      
  body: JSON.stringify({key1: email, name, message})
  })
  .then(response => response.json())
  .then(data => {
    console.log('Success:', data);
  })
  .catch((error) => {
    console.error('Error:', error);
});

Я пробовал чтобы добавить «режим» внутри функции выборки, но безрезультатно. Любые советы по отладке тоже действительно помогут. Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Если кто-то хочет знать ответ на мой вопрос: это произошло потому, что вам нужно повторно развернуть CORS, чтобы вступил в силу.

Итак:

  1. Go к вашему API.

  2. В левой строке меню go в Ресурсы.

  3. Щелкните свой ресурс

  4. Щелкните панель действий> Включить CORS

  5. Этапы> Развернуть

0 голосов
/ 18 июня 2020

Совместное использование ресурсов между источниками (CORS) - это механизм, который использует дополнительные заголовки HTTP, чтобы указать браузерам предоставить веб-приложению, работающему в одном источнике, доступ к выбранным ресурсам из другого источника. Веб-приложение выполняет HTTP-запрос с несколькими источниками, когда оно запрашивает ресурс, который имеет другое происхождение (домен, протокол или порт) от его собственного.

Ниже приведена AWS документация для CORS.

https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

...