Метод API Gateway Options, выбрасывающий 403
У меня есть Custom Authorizer
с API Gateway
, При развертывании через SAM Module
это также создает Options Method
когда вы включаете CORS
, То, чего я действительно не понимаю, это то, почему пользовательский авторизатор привязывается к Options
конечная точка?
Это бросать 403
когда я пытаюсь вызвать конечную точку из браузера и прекрасно работает, когда я удаляю Authorization
от Options
метод.
Ниже template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Globals:
Function:
Runtime: nodejs8.10
Api:
Cors:
AllowMethods: "'*'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
Resources:
TestApi:
Type: AWS::Serverless::Api
Properties:
StageName: dev
Auth:
DefaultAuthorizer: testAuthoriser
Authorizers:
testAuthoriser:
FunctionArn:
Fn::ImportValue: !Sub test-custom-autoriser
Identity:
Header: Authorization
ValidationExpression: ^Bearer [-0-9a-zA-Z\._]*$
ReauthorizeEvery: 30
Version:
Type: 'AWS::Serverless::Function'
Properties:
FunctionName: test
CodeUri: src/test
Handler: index.test
Events:
EndPoint:
Type: Api
Properties:
RestApiId: !Ref TestApi
Path: /test
Method: get
Auth:
Authorizer: testAuthoriser
Я включил 'Access-Control-Allow-Origin': '*'
в заголовке. Не уверен, что здесь происходит. Любая помощь будет оценена
1 ответ
Вот ответ, см. Проблему с aws sam здесь
Api:
Cors:
AllowHeaders: "'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization'"
AllowOrigin: "'*'"
Auth:
DefaultAuthorizer: CognitoAuthorizer
Authorizers:
CognitoAuthorizer:
UserPoolArn: yourUserPool
AddDefaultAuthorizerToCorsPreflight: False // <== this line
Для CORS AWS API Gateway всегда будет включать метод OPTIONS, чтобы разрешить предварительную проверку. Вы можете прочитать больше об этом в документации.
Причина, по которой вы видите предпечатную ошибку в вашем браузере, потому что 403 Запрещено поступает от вашего Custom Authorizer. Custom Authorizer не возвращает заголовки, поэтому вы всегда увидите ошибку предпечатной проверки, если запрос был отклонен Custom Authorzer.
Чтобы исправить это, зарегистрируйте политику, которую возвращает ваш Custom Authorizer. Вы можете увидеть это в CloudWatch. Политика должна содержать инструкцию Allow для запрашиваемого ресурса.