Я использую SAM для создания своего API в облачной информации.
Я получаю 403 ЗАПРЕЩЕНО на мой метод опций (таким образом, также мой предварительный просмотр для моего метода get).
Как я могу позволить моему методу опций ответить 200 OK без моего x- api-key?
Я пробовал так много ответов на стеке, но ни один из них не подходит для моего формата шаблона SAM. Я перепробовал все разные комбинации моих AllowHeaders. Я пропустил ключ x-api - все тот же 403 ЗАПРЕЩЕНО.
Если я отправлю свой ключ x-api в почтальон с моей просьбой, я получу 200 OK, но в моем приложении reactjs по-прежнему выдает ту же ошибку, что и ниже, что мой предварительный просмотр не проходит.
Ответ журнала консоли на метод get ![enter image description here](https://i.stack.imgur.com/zzrDL.jpg)
Ответ почтальона на метод options ( предполетное тестирование) ![enter image description here](https://i.stack.imgur.com/fbspB.jpg)
Ошибка Cloudwatch ![enter image description here](https://i.stack.imgur.com/JMpvY.jpg)
template.yaml
Globals:
Function:
Timeout: 10
Api:
Cors:
AllowMethods: "'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT'"
AllowHeaders: "'Content-Type,X-Amz-Date,X-Amz-Security-Token,x-api-key,Authorization,Origin,Host,X-Requested-With,Accept,Access-Control-Allow-Methods,Access-Control-Allow-Origin,Access-Control-Allow-Headers'"
AllowOrigin: "'*'"
Resources:
BSApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
ApiKeyRequired: true
AddDefaultAuthorizerToCorsPreflight: false
GrondvogFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: grondvog/
Handler: app.lambdaHandler
Runtime: nodejs12.x
Policies:
- LambdaInvokePolicy: {
'FunctionName': !Ref RDBQueryFunction
}
Environment:
Variables:
"RDBQueryFunctionName": !Ref RDBQueryFunction
Events:
KryGrondvog:
Type: Api
Properties:
RestApiId: !Ref BSApi
Path: /grondvog
Method: get
OptionsGrondvog:
Type: Api
Properties:
RestApiId: !Ref BSApi
Path: /grondvog
Method: options
Лямбда-функция
if (event.httpMethod == 'OPTIONS') {
rekords = {
statusCode: 200,
headers: {
"Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,X-Amz-Security-Token,x-api-key,Authorization,Origin,Host,X-Requested-With,Accept,Access-Control-Allow-Methods,Access-Control-Allow-Origin,Access-Control-Allow-Headers",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT",
"X-Requested-With": "*"
},
body: JSON.stringify({ statusText: "OK" })
};
}