Сообщение об ошибке «Запрос объекта слишком велик» (HTTP 413) возвращается в браузер - PullRequest
4 голосов
/ 18 мая 2009

Иногда пользователи нашего веб-приложения встречают следующее сообщение об ошибке:

Request Entity Too Large
The requested resource
/ourapp/ourlocation/
does not allow request data with GET requests, or the amount of data provided in the request exceeds the capacity limit.

Мы проверили наши журналы, но нам не удалось найти записи, которые, по-видимому, коррелируют с ошибкой выше. После небольшого исследования я считаю, что проблема в том, что какой-то аспект запроса слишком велик для определенных прокси-серверов, и прокси-сервер возвращает ошибку 413 в веб-браузер пользователя. (Хотя это только предположение.)

У вас есть какие-либо идеи для выяснения причины этой ошибки? До сих пор я использовал Charles Web Debugging Proxy и LiveHTTPHeaders , чтобы попробовать и наблюдать, сколько байтов использует каждый запрос к данной странице.

Вот еще несколько вопросов, которые могут помочь при устранении неполадок.

  1. Какой максимальный размер печенья разрешен? 4096 байт?
  2. Какие части запроса GET считаются с пределом емкости, указанным в сообщении об ошибке?
  3. Каков максимальный размер запроса GET?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2009

Для nginx, действующего в качестве обратного прокси, я должен был добавить:


    proxy_set_header  Destination   $dest;
    client_max_body_size       1000m; #100m shoul'd do fine too
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
3 голосов
/ 18 мая 2009

Если прокси-сервер возвращает ошибку, то я ожидаю, что там будет другой заголовок ответа с именем прокси-сервера. Может быть, заголовок «X-Via» или «Сервер»?

На ваши вопросы ... 1 и 3 до прокси-сервера. 2: я бы предположил, что каждый байт в запросе будет учитываться в пределе.

Чтобы проверить это, я бы создал консольное приложение, которое продолжало бы посылать все большие и большие запросы "GET", пока оно не получило обратно 413. Затем вы можете заставить одного из этих пользователей запустить его и посмотреть, можно ли его воспроизвести.

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