Опциональный запрос API GW перед полетом удаляет мои заголовки CORS - PullRequest
0 голосов
/ 14 апреля 2020

Я поддерживаю AWS Поддержка, но они еще не решили мою проблему.

Моя настройка AWS API GW v2 -> AWS Lambda (nodejs12 express)

Я могу работать с моим API с помощью Почтальона, я получаю правильные заголовки и ответы от каждого вызова с помощью методов GET, PUT, POST, DELETE, кроме моего вызова OPTIONS.

Вызов параметров возвращает это:

enter image description here

Мой код имеет очень простой вывод журнала в начале (в целях отладки):

exports.handler = (event, context) => {
  console.log('httpMethod', event.httpMethod)
  return awsServerlessExpress.proxy(server, event, context, 'PROMISE').promise.then(data => {
    console.log('returning data \n', data)
    return data
  })
}

Я вызываю свою лямбда-службу локально, используя это:

sam local invoke "Test" -e event.json

Это вывод терминала:

Invoking index.handler (nodejs10.x)

Fetching lambci/lambda:nodejs10.x Docker container image......
Mounting /Users/simon/Git/server-service as /var/task:ro,delegated inside runtime container
START RequestId: 5c30f5a3-8006-1ba2-6e99-0c96ba3e7c76 Version: $LATEST
2020-04-14T18:00:24.398Z    5c30f5a3-8006-1ba2-6e99-0c96ba3e7c76    INFO    httpMethod OPTIONS
2020-04-14T18:00:24.421Z    5c30f5a3-8006-1ba2-6e99-0c96ba3e7c76    INFO    returning data
 { statusCode: 200,
  body: 'PUT,POST,GET,HEAD,DELETE',
  headers:
   { 'x-powered-by': 'Express',
     'access-control-allow-origin': '*',
     'access-control-allow-credentials': 'false',
     'access-control-allow-methods': '*',
     'access-control-allow-headers':
      'Content-Type, Authorization, cache-control, X-Frame-Options, If-Modified-Since',
     allow: 'PUT,POST,GET,HEAD,DELETE',
     'content-type': 'text/html; charset=utf-8',
     'content-length': '24',
     etag: 'W/"18-NOIbTUNpYRs55uZrUoLiPa8oj0c"',
     date: 'Tue, 14 Apr 2020 18:00:24 GMT',
     connection: 'close' },
  isBase64Encoded: false }

Поэтому я предполагаю, что моя интеграция API GW удаляет эти заголовки.

Это мой API GW Ресурс:

ApiGatewayV2:
    Type: AWS::ApiGatewayV2::Api
    Properties:
      Name: Lambda Proxy
      Description: "Lambda Proxy Manual API"
      ProtocolType: HTTP
      CorsConfiguration:
        AllowCredentials: false
        AllowHeaders:
          - "Authorization"
          - "*"
        AllowMethods:
          - "*"
        AllowOrigins:
          - "*"
        ExposeHeaders:
          - "*"
        MaxAge: 300

Мой клиент показывает эту ошибку: enter image description here

РЕДАКТИРОВАТЬ:

I в нескольких местах прочитайте, что если я настрою CORS на своем ресурсе AWS, он ответит на них, не обращаясь к лямбде, однако он все равно будет лямбда?

Я также удалил конфигурацию CORS из своего ресурса API GW:

ApiGatewayV2:
    Type: AWS::ApiGatewayV2::Api
    Properties:
      Name: Lambda Proxy
      Description: "Lambda Proxy Manual API"
      ProtocolType: HTTP

В надежде, что моя лямбда должна вместо этого доставлять заголовки. Не повезло.

...