我有一个web应用程序,它使用setRequestHeader应用程序接口向XmlHttpRequest对象添加上下文信息。我使用了一个自定义的标题名称(例如,X-Foo)和一个JSON结构化值。它不是URL、QueryString或POST主体的一部分,因为它是关于请求的元信息。
标头值是否有实际大小限制?如果我的JSON被截断,它将变得无法解析。我最关心的是Apache2,Tomcat6和IIS7中的限制。我在谷歌上搜索了http header length limit,但很多结果似乎都过时了。在How big can a user agent string get?中有一些相关的评论,但没有我想要的那么具体。
编辑:我刚刚遇到了类似的问题- Maximum on http header values?
发布于 2009-07-08 12:21:49
可以,但限制是可配置的,并且依赖于平台。例如,Tomcat的默认限制为8K。我相信IIS6,对IIS7不确定,有16K的限制。在对几个网站使用集成的windows身份验证时,我遇到了这个问题。原来我的安全令牌在编码到头文件时太大了。幸运的是,这些都是可配置的。可以在http://support.microsoft.com/kb/820129上找到IIS的注册表设置。我认为要更改的关键设置是MaxFieldLength (每个标头大小)和MaxRequestBytes (请求的总大小)。
发布于 2011-05-28 16:59:46
虽然每个web服务器软件都有一些限制,但对于HTTP request line加标头字段还是每个标头字段都有限制,这是不同的。
以下是摘要:
H110IIS:E114>2097152字节
(对于请求行加上标头fields)
5.0
:E119
131072字节,16384字节(对于每个标头fields))(对于每个标头fields)
)
因此,结论是:要被上述所有web服务器接受,请求的请求行加报头字段不应超过8190Bytes。这也是每个报头字段的限制(实际上甚至更少)。
发布于 2009-07-09 23:42:59
对于Apache,我找到了这篇Server Limits for Apache Security文章,其中列出了这些指令:
# allow up to 100 headers in a request
LimitRequestFields 100
# each header may be up to 8190 bytes long
LimitRequestFieldsize 8190
对于Nginx,来自HttpCoreModule的large_client_header_buffers指令控制这一点:
请求的最长标题行也不能超过一个缓冲区的大小,否则客户端会收到错误"Bad request“(400)。
缺省情况下,一个缓冲区的大小等于页面的大小,具体取决于4K或8K的平台
https://stackoverflow.com/questions/1097651
复制相似问题