Я использую CFT для создания env для своего API. Я добавил ВАРИАНТЫ для CORS. Я заметил, что когда я делаю тест от AWS console for OPTIONS
, я получаю ответ 200
. Однако, когда я делаю то же самое с CURL or PostMan
, я получаю 500
внутреннюю ошибку сервера. После рассмотрения вопросов SO, связанных с ним. Я изменил ответ интеграции на CONVERT_TO_TEXT. но это тоже не решило проблему.
Я заметил проводное поведение в журнале. Ниже приведен фрагмент журнала для запроса из консоли AWS:
Sat Apr 13 15:06:26 UTC 2019 : Method request headers: { Access-Control-Request-Method= POST, Content-Type= application/json}
Sat Apr 13 15:06:26 UTC 2019 : Method request body before transformations:
Sat Apr 13 15:06:26 UTC 2019 : Method response body after transformations:
Sat Apr 13 15:06:26 UTC 2019 : Method response headers: {X-Requested-With=*, Access-Control-Allow-Headers=Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-requested-with, Access-Control-Allow-Origin=*, Access-Control-Allow-Methods=POST,OPTIONS, Content-Type=application/json}
Sat Apr 13 15:06:26 UTC 2019 : Successfully completed execution
Sat Apr 13 15:06:26 UTC 2019 : Method completed with status: 200
Но тот же запрос, когда я даю из CRUL или PM, я вижу следующий журнал:
Method request path: {}
Method request query string: {}
Method request headers: Method request headers: {Accept=*/*, CloudFront-Viewer-Country=IN, CloudFront-Forwarded-Proto=https, CloudFront-Is-Tablet-Viewer=false, CloudFront-Is-Mobile-Viewer=false, User-Agent=curl/7.55.1, X-Forwarded-Proto=https, CloudFront-Is-SmartTV-Viewer=false, Host=MYHOST, X-Forwarded-Port=443, (CloudFront), Access-Control-Request-Method=POST, CloudFront-Is-Desktop-Viewer=true, Content-Type=application/json}
Method request body before transformations: [Binary Data]
Execution failed due to configuration error: Unable to transform request
Method completed with status: 500
Мы видим, что он пытается преобразовать [Binary Data]
, но я ничего не отправляю.
Завиток, который я использовал: curl -X OPTIONS -H "Access-Control-Request-Headers: Content-Type" -H "Access-Control-Request-Method: POST" -H "Access-Control-Allow-Origin: '*'" -v MYHOST
Почему я вижу эту разницу в журнале? что пошло не так в моей конфигурации? Вы можете помочь мне.
ОБНОВЛЕНИЕ: я использую приведенный ниже CFT
Type: AWS::ApiGateway::Method
Properties:
AuthorizationType: NONE
HttpMethod: OPTIONS
Integration:
Type: MOCK
IntegrationResponses:
- StatusCode: 200
ResponseParameters:
method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
method.response.header.Access-Control-Allow-Methods: "'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT'"
method.response.header.Access-Control-Allow-Origin: "'*'"
RequestTemplates:
application/json:
Fn::Join:
- ''
- - "{"
- ' {"statusCode":200} '
- "}"
MethodResponses:
- StatusCode: 200
ResponseParameters:
method.response.header.Access-Control-Allow-Headers: true
method.response.header.Access-Control-Allow-Methods: true
method.response.header.Access-Control-Allow-Origin: true
x-amazon-apigateway-integration
и если опубликуете шаблон, который используете для запросов OPTIONS. Кроме того, чтобы быть ясным: вы не получаете такой же сбой при тестировании запросов POST с помощью curl или Postman? См. также forums.aws.amazon.com/thread.jspa?threadID=256140< /а> - person sideshowbarker   schedule 14.04.2019