有实际的 HTTP 标头长度限制吗?
-
11-09-2019 - |
题
我有一个 Web 应用程序,可以将上下文信息添加到 XmlHttp请求 对象使用 设置请求头 API。我正在使用自定义标头名称(例如X-Foo)和一个 JSON 结构化价值。它不是 URL QueryString 或 POST 正文的一部分,因为它是有关请求的元信息。
标头值是否有实际大小限制?如果我的 JSON 被截断,它将变得无法解析。我最关心的是 Apache 2、Tomcat 6 和 IIS 7 中的限制。我用谷歌搜索了 http标头长度限制, ,但许多结果似乎已经过时。里面有一些相关的评论 用户代理字符串可以有多大? 但没有我想要的那么具体。
编辑:我刚刚遇到了这个类似的问题 - http 标头值的最大值?
解决方案
是的,但限制是可配置的,依赖于平台。例如, Tomcat的具有8K的默认限制。我相信,IIS 6,不知道IIS 7,有16K的限制。我使用集成Windows身份验证的几个网站时遇到了这一点。结果我安全令牌是太大时编码到标头。幸运的是,这些都是可配置的。针对IIS的注册表设置可以在 http://support.microsoft.com/kb/820129 找到。相信按键设置改变是的MaxFieldLength(每头大小)和MaxRequestBytes(的请求总大小)。
其他提示
有关的Apache,我发现这个服务器限制Apache的安全文章列出这些指令:
# 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服务器的服务器:指定最大 HTTP 标头行长度
在 Flash Media Server Adaptor.xml 文件中,
MaxHeaderLineLength
element 决定服务器可以处理的 HTTP 标头的大小。默认值为MaxHeaderLineLength
是1024字节。一些浏览器发送大于1024个字节的标头。在这种情况下,Apache会发回空响应。要解决此问题,请配置MaxHeaderLineLength
至 8192。笔记:默认情况下,Apache HTTP 标头大小限制为 8 KB(8190 字节加回车符)。
将其放在这里以防 Flash Media Server 上的标头大小限制影响其他人。