Продолжайте получать 502 по лямбда-запросу с помощью API Gateway.В запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 20 января 2019

Я создал API-шлюз с Serverless, и первый маршрут, который я сделал с allowCredentials: true, не будет работать.

clients-confirmation:
    handler: clients.onConfirmation
    events:
      - http:
          path: clients/on-confirmation
          method: post
          cors:
            origin: 'https://840b1a6d.ngrok.io' # <-- Specify allowed origin
            headers:
              - Content-Type
              - X-Amz-Date
              - Authorization
              - X-Api-Key
              - X-Amz-Security-Token
              - X-Amz-User-Agent
              - Access-Control-Allow-Origin
              - Access-Control-Allow-Credentials
              - Access-Control-Allow-Methods
              - Access-Control-Allow-Headers
            allowCredentials: true
            cacheControl: 'max-age=600, s-maxage=600, proxy-revalidate'
          authorizer: aws_iam

Пользователь вошел в систему, и я использую AWS-Amplify Auth.post для публикациик маршруту.

Я пытался разместить свой локальный хост на ngrok, чтобы лучше чувствовать реальную среду, но он не будет работать.

Мой ResponseBuilder предоставляет правильные заголовки, я думаю.

export default class ResponseBuilder {
  static create(data, withCredentials = false) {
    return {
      statusCode: 200,
      headers: {
        'Access-Control-Allow-Origin': 'https://840b1a6d.ngrok.io',
        'Access-Control-Allow-Credentials': withCredentials, // true
        'Access-Control-Allow-Headers': 'access-control-allow-origin, Access-Control-Allow-Headers, Access-Control-Allow-Origin, Origin,Accept, Access-Control-Allow-Credentials'
      },
      body: JSON.stringify(data),
      'isBase64Encoded': false,
    };
  }
}

Я использую его при каждом запросе.Я попытался указать источник ngrok и подстановочный знак, но он продолжает сообщать мне одну и ту же ошибку.

Есть ли что-то, чего я не знаю об отклике лямбды или параметре, который я должен добавить в свой сервер без серверафайл?

Большое спасибо за помощь!

1 Ответ

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

allowCredentials: true не будет работать с 'Access-Control-Allow-Origin': '*'.

Вы должны указать источник в явном виде:

'Access-Control-Allow-Origin': 'https://840b1a6d.ngrok.io'

также withCredentials in 'Access-Control-Allow-Credentials': withCredentials
должно быть true

...