Вопрос по http-headers, http, apache2, tomcat6, iis-7 – Есть ли практическое ограничение длины HTTP-заголовка?

68

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

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

Edit: Я просто наткнулся на этот похожий вопрос -Максимум на значениях заголовка http?

Интересный подход. Какие метаданные вы отправляете таким образом? Marcus Downing
Также обратите внимание, что это может вызвать проблемы, если пользователь подключается через прокси-сервер carpii

Ваш Ответ

5   ответов
54

ния, есть разница, существует ли ограничение дляСтрока HTTP-запроса плюс поля заголовка или для каждого поля заголовка.

Вот краткое изложение:

Apache 1.3, 2.0, 2.2, 2.3: 8190 Bytes (for each header field) IIS: 4.0: 2097152 Bytes (for the request line plus header fields) 5.0: 131072 Bytes, 16384 Bytes with Windows 2000 Service Pack 4 (for the request line plus header fields) 6.0: 16384 Bytes (for each header fields) Tomcat: 5.5.x/6.0.x: 49152 Bytes (for the request line plus header fields) 7.0.x: 8190 Bytes (for the request line plus header fields)

Итак, чтобы сделать вывод: быть принятым всеми веб-серверами выше,request’s request line plus header fields should not exceed 8190 Bytes, Это также предел для каждого поля заголовка (фактически даже меньше).

4

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

14

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

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

Для Nginxlarge_client_header_buffers Директива от HttpCoreModule контролирует это:

The longest header line of request also must be not more than the size of one buffer, otherwise the client get the error "Bad request" (400).

By default the size of one buffer is equal to the size of page, depending on platform this either 4K or 8K

48

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

Я нашел эту ссылку в MSDN, чтобы установить пределы заголовка IIS для конкретного заголовка -iis.net/ConfigReference/system.webServer/security/… Kevin Hakanson
Несмотря на то, что вы можете настроить сервер, маловероятно, что вы действительно сможете настроить весь путь через брандмауэры, балансировщики нагрузки и прокси-серверы. Небольшой размер заголовка позволяет избежать проблем.
Согласно статье KB, эти поля реестра работают для IIS6 и IIS7
3

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

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

In the Flash Media Server Adaptor.xml file, the MaxHeaderLineLength element determines the size of the HTTP header the server can handle. The default value for MaxHeaderLineLength is 1024 bytes. Some browsers send a header larger than 1024 bytes. In this scenario, Apache sends back, an empty response. To fix this issue, configure MaxHeaderLineLength to 8192.

Note: By default, the Apache HTTP header size limit is 8 KB (8190 bytes plus a carriage return).

Поместите это здесь на случай, если ограничение размера заголовка на Flash Media Server укусит кого-то другого.

Похожие вопросы