Cloudfront отвечает со статусом 413 (запрос слишком большой)
У нас есть требование отправлять большие данные в виде части URL, которая будет считываться под углом, чтобы отобразить страницу. URL-адрес более 10000 символов. Но облачный фронт возвращается ниже ошибки -
Плохой запрос. Сгенерировано облачным фронтом (CloudFront) Идентификатор запроса: I2fOApzZr4psKrWsY6abezp5R0m30zKDKE7c0MuB_JkjWbvxz5GVnQ==
Консоль браузера возвращает код ошибки 413 с сообщением ниже -
Не удалось загрузить ресурс: сервер ответил со статусом 413 (слишком большой объект запроса)
Есть ли в облаке какие-либо настройки, которые могут позволить принимать большие URL-запросы.
На apache я знаю, что есть такие настройки, как LimitRequestBody, которые могут допускать большие входные данные, но запрос не достигает apache и ошибки из-за самого cloudfront.
Когда я играл с количеством символов - облачный фронт разбивается после 8226 символов.
1 ответ
Это не поддерживается CloudFront имеет следующие жесткие ограничения, которые приемлемы для большинства приложений:
Максимальная длина запроса, включая заголовки и строки запроса: 20 480 байт
Максимальная длина URL: 8192 байта
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html
Очевидное расхождение между 8,226 - 8,192 = 34, вероятно, связано с длиной вашего имени хоста и http://
если ты считаешь это. Документация CloudFront гласит "URL", но ограничение может фактически применяться только к объединенной длине пути + строки запроса, так как Host:
заголовок отделен от остальной части запроса в реальном протоколе HTTP.
Указанные выше ограничения и некоторые другие, по-видимому, не подлежат обсуждению.
Другие ограничения, такие как пропускная способность (40 Гбит / с), количество веб-распределений на учетную запись AWS (200), являются просто ограничениями по умолчанию, которые вы могли бы потенциально увеличить, отправив запрос в службу поддержки AWS с описанием вашего варианта использования, но это не будь случай, здесь.
Angular не может вызвать API напрямую из-за проблем с аутентификацией.
Этот вид звучит как случай ajax-вызовов к прокси REST API, который извлекает данные из источника, требующего авторизации, поэтому код на стороне браузера не должен... возможно, что-то в Lambda за API-шлюзом.