Существует ли практическое ограничение длины заголовка HTTP?

У меня есть веб-приложение, которое добавляет контекстную информацию XmlHttpRequest объекты с помощью setRequestHeader API-интерфейс. Я использую пользовательское имя заголовка (например, X-Foo) и в формате JSON структурированные значения. Он не является частью строки запроса URL или тела POST, потому что это метаинформация о запросе.

существует ли практический предел размера для значения заголовка? Если мой JSON усекается, он становится непростительным. Я очень обеспокоен. с ограничениями в Apache 2, Tomcat 6 и IIS 7. Я сделал поиск Google для ограничение длины заголовка http, но многие результаты кажутся устаревшими. Есть некоторые соответствующие комментарии в насколько большой может получить строка агента пользователя? но не так конкретно, как хотелось бы.

Edit: Я только что столкнулся с этим подобным вопросом -максимальное значение заголовка http?

5 ответов


да, но ограничения настраиваются и зависят от платформы. Например, Tomcat имеет ограничение по умолчанию 8K. Я считаю, что IIS 6, не уверен в IIS 7, имеет предел 16K. Я столкнулся с этим при использовании встроенной проверки подлинности windows для нескольких веб-сайтов. Оказывается, мой маркер безопасности был слишком большим, когда закодирован в заголовок. К счастью, они настраиваются. Параметры реестра для IIS можно найти в http://support.microsoft.com/kb/820129. Я считаю, что ключевыми настройками для изменения являются MaxFieldLength (на размер заголовка) и MaxRequestBytes (общий размер запроса).


хотя каждое программное обеспечение веб-сервера имеет некоторые ограничения, есть разница, есть ли ограничение для строка HTTP-запроса плюс поля заголовка или для каждого поля заголовка.

вот резюме:

  • Apache 1.3, 2.0, 2.2, 2.3: 8190 байт (для каждого поля заголовок)
  • в IIS:
    • 4.0: 2097152 Байты (для строки запроса плюс поля заголовка)
    • 5.0: 131072 байт, 16384 байт С пакетом обновления 4 для Windows 2000 (для полей заголовка строки запроса плюс)
    • 6.0: 16384 байт (для каждого поля заголовка)
  • Tomcat:
    • 5.5.x/6.0.x: 49152 байт (для строки запроса плюс поля заголовка)
    • 7.0.x: 8190 байт (для строки запроса плюс поля заголовка)

Итак, чтобы заключить: быть принятым всеми веб-серверами выше, a строка запроса запроса плюс поля заголовка не должны превышать 8190 байт. Это также ограничение для каждого поля заголовка (фактически еще меньше).


для Apache, я нашел это ограничения сервера для Apache Security статья, в которой перечислены эти директивы:

  # allow up to 100 headers in a request
  LimitRequestFields 100
  # each header may be up to 8190 bytes long
  LimitRequestFieldsize 8190

для Nginx,large_client_header_buffers директива из HttpCoreModule управляет этим:

самая длинная строка заголовка запроса также должна быть не больше размера одного буфера, в противном случае клиент получит ошибку "плохой запрос" (400).

по умолчанию размер буфера равен размер страницы, в зависимости от платформы это или 4K, или 8K


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


Flash Media Server 4.5 имеет очень короткий предел длины заголовка по умолчанию, который может заставить сервер просто не отвечать, особенно в обстоятельствах, когда есть умеренная загрузка файлов cookie.

посмотреть: конфигурация и администрирование Flash Media Server 4.5: настройка сервера Настройка Apache HTTP Server: укажите максимальную длину строки заголовка HTTP

в адаптере Flash Media Server.xml-файл,MaxHeaderLineLength элемент определяет размер HTTP-заголовка, который может обрабатывать сервер. Значение по умолчанию для MaxHeaderLineLength - это 1024 байта. Некоторые обозреватели отправить заголовок размером более 1024 байт. В этом случае Apache отправляет ответ был пустым. Чтобы устранить эту проблему, настройте MaxHeaderLineLength до 8192.

примечание: по умолчанию ограничение размера заголовка HTTP Apache составляет 8 КБ (8190 байт плюс возврат каретки).

поместите это здесь, если ограничение размера заголовка на Flash Медиа-сервер кусает кого-то другого.