Разрешен ли запрос Get с телом на AWS? Ошибка 403 от CloudFront - PullRequest
0 голосов
/ 29 апреля 2019

Я опубликовал API для AWS с Visual Studio и использую шаблон для проекта приложения AWS Serverless, сейчас я тестирую методы с почтальоном, но все методы get, для которых требуется тело, возвращают ошибку, в которой упоминается облачный фронт в ответе.Я не знаю, связана ли эта проблема с облачным фронтом или это реализация спецификации AWS HTTP 1.1, которая не позволяет получать запросы с телом:

Примечание. Получение запросов с телом было требованием нашего клиента

RFC 7231 HTTP / 1.1 спецификация гласит следующее: полезная нагрузка в сообщении запроса GET не имеет определенной семантики;отправка тела полезной нагрузки по запросу GET может привести к тому, что некоторые существующие реализации отклонят запрос.

    
        
        ERROR: The request could not be satisfied
    
    
        403 ERROR
        The request could not be satisfied.
        
Bad request.


        
Generated by cloudfront (CloudFront) Request ID:

, поэтому мои вопросы:

  1. разрешен ли запрос get с телом в AWS?
  2. Как AWS обрабатывает запрос get с телом?
  3. есть ли способ заставить работу получать запросы с телом на AWS?

Я видел почти такой же вопрос здесь: Запрос AWS GET с телом, отклоненным CloudFront

, и они указывают на этот документ: https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-lambda-non-proxy-integration.html, в котором говорится, что если вы отправляете запрос get с телом, он возвращает ошибку 400, но я получаю ошибку 403

не могли бы вы уточнить немного больше?или не могли бы вы указать на документ Amazon, в котором упоминаются ограничения на получение запросов?

Большое спасибо

1 Ответ

0 голосов
/ 30 апреля 2019

Запрос GET с Body не разрешен в CloudFront, вы получите 403, если отправите body, хотя в RFC конкретно не говорится, что вы должны отклонить GET с body, но CloudFront не позволяет этого.Наилучшим вариантом передачи тела в запросе GET является строка запроса (максимальная длина запроса, включая заголовки и строки запроса 20 480 байт).

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html

GET-запросы, содержащие телоЕсли запрос GET для программы просмотра содержит тело, CloudFront возвращает код состояния HTTP 403 (запрещено).

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