Предварительная проверка CORS на безсерверных функциях AWS Lamba. - PullRequest
0 голосов
/ 03 декабря 2018

Я пробовал как официальную документацию для исправления CORS без сервера и других решений, но проблема все еще сохраняется.

То, что я до сих пор делал, это

1, установите CORS на все функции.

 events:
  - http:
      path: /api/v1/user/login
      method: post
      cors: true

2, установите исправление авторизатора для CORS.

 GatewayResponseDefault4XX:
  Type: 'AWS::ApiGateway::GatewayResponse'
  Properties:
    ResponseParameters:
      gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
      gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
      gatewayresponse.header.Access-Control-Allow-Methods: "'*'"
    ResponseType: DEFAULT_4XX
    RestApiId:
      Ref: 'ApiGatewayRestApi'

3, В заголовке ответа я установил как,

headers: {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*',
                "Access-Control-Allow-Headers": '*',
                'Access-Control-Allow-Credentials': true,
            }

Все еще получаю проблему, основанную на CORS

Error message:

Access to XMLHttpRequest at ’https://xxxxxx.execute-api.us-east-1.amazonaws.com/dev/api/v1/user/login' from origin ‘http://localhost:4200’ has
been blocked by CORS policy: Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Я не знаю, является ли это лучшим или правильным способом исправить это. Но это сработало.

Я изменил значение cors по умолчанию на пользовательские значения.

events:
- http:
  path: /api/v1/user/login
  method: post
  cors: true

на это,

events:
  - http:
      path: /api/v1/user/login
      method: post
      cors:
        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'

, и это сработало!

0 голосов
/ 03 декабря 2018

Access-Control-Allow-Headers не принимает подстановочные знаки.

Если вы не можете точно установить значения заголовка, просто удалите настройку Access-Control-Allow-Headers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...