Существует ли практический предел длины заголовка HTTP?
У меня есть веб-приложение, которое добавляет контекстную информацию XmlHttpRequest объекты с помощью setRequestHeader API. Я использую имя пользовательского заголовка (например, X-Foo) и JSON структурированные значения. Он не является частью URL QueryString или POST body, потому что это метаинформация о запросе.
существует ли практический предел размера для значения заголовка? Если мой JSON усекается, он становится непростительным. Я очень обеспокоен с ограничениями в Apache 2, Tomcat 6 и IIS 7. Я сделал поиск в Google для ограничение длины заголовка http, но многие результаты кажутся устаревшими. Есть некоторые соответствующие комментарии в насколько большой может быть строка агента пользователя? но не так конкретно, как хотелось бы.
Edit:
Я просто наткнулся на этот аналогичный вопрос-максимум на значения заголовка http?
5 ответов:
да, но ограничения настраиваются и зависят от платформы. Например, Tomcat имеет ограничение по умолчанию 8К. Я считаю, что службы IIS 6, не уверен, что службы IIS 7, имеет ограничение в 16к. Я столкнулся с этим при использовании встроенной проверки подлинности Windows для нескольких веб-сайтов. Оказывается, мой маркер безопасности был слишком большим при кодировании в заголовок. К счастью, они настраиваются. Параметры реестра для IIS можно найти по адресу http://support.microsoft.com/kb/820129. Я считаю, что ключевыми настройками для изменения являются MaxFieldLength (размер заголовка) и MaxRequestBytes (общий размер запроса).
хотя каждое программное обеспечение веб-сервера имеет некоторые ограничения, есть разница, есть ли предел для строка HTTP-запроса плюс поля заголовка или для каждого поля заголовка.
вот резюме:
Итак, чтобы заключить: быть принятым всеми веб-серверами выше, 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 управляет этим:
самая длинная строка заголовка запроса также должна быть не больше размера одного буфера, иначе клиент получит ошибку "Bad request" (400).
по умолчанию размер буфера равен размер страницы, в зависимости от платформы это или 4K, или 8K
хотя вы можете настроить сервер, маловероятно, что вы действительно можете настроить весь путь через брандмауэры, балансировщики нагрузки и прокси-серверы. Сохранение небольшого размера заголовка устраняет проблемы.
Flash Media Server 4.5 имеет очень короткий предел длины заголовка по умолчанию, который может привести к тому, что сервер просто не ответит, особенно в условиях, когда есть умеренная загрузка файлов cookie.
в адаптере Flash Media Server.xml-файл,
MaxHeaderLineLengthэлемент определяет размер заголовка HTTP, который может обрабатывать сервер. Значение по умолчанию дляMaxHeaderLineLength- это 1024 байта. Некоторые обозреватели отправьте заголовок размером более 1024 байт. В этом случае Apache отправляет назад пустой ответ. Чтобы устранить эту проблему, настройтеMaxHeaderLineLengthдо 8192.примечание: по умолчанию ограничение размера заголовка Apache HTTP составляет 8 КБ (8190 байт плюс возврат каретки).
положить это здесь в случае, если ограничение размера заголовка на Flash Медиа-сервер кусает кого-то еще.
Comments