首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否有实际的HTTP报头长度限制?

是否有实际的HTTP报头长度限制?
EN

Stack Overflow用户
提问于 2009-07-08 12:05:56
回答 5查看 105.4K关注 0票数 71

我有一个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?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-08 12:21:49

可以,但限制是可配置的,并且依赖于平台。例如,Tomcat的默认限制为8K。我相信IIS6,对IIS7不确定,有16K的限制。在对几个网站使用集成的windows身份验证时,我遇到了这个问题。原来我的安全令牌在编码到头文件时太大了。幸运的是,这些都是可配置的。可以在http://support.microsoft.com/kb/820129上找到IIS的注册表设置。我认为要更改的关键设置是MaxFieldLength (每个标头大小)和MaxRequestBytes (请求的总大小)。

票数 51
EN

Stack Overflow用户

发布于 2011-05-28 16:59:46

虽然每个web服务器软件都有一些限制,但对于HTTP request line加标头字段还是每个标头字段都有限制,这是不同的。

以下是摘要:

  • Apache 1.32.02.22.3:Windows2000Service Pack4的8190Bytes(对于每个标头字段)

H110IIS:E114>2097152字节(对于请求行加上标头fields)

  • 5.0:E119131072字节,16384字节(对于每个标头fields)

)(对于每个标头fields)

  • 6.0:)(对于每个标头fields)

)

  • 5.5.x/6.0.x
  • Tomcat:
    • 5.5.x/6.0.x49152字节(适用于请求行加上标题fields)
    • 7.0.x8190Bytes(适用于请求行加上标题Tomcat

因此,结论是:要被上述所有web服务器接受,请求的请求行加报头字段不应超过8190Bytes。这也是每个报头字段的限制(实际上甚至更少)。

票数 58
EN

Stack Overflow用户

发布于 2009-07-09 23:42:59

对于Apache,我找到了这篇Server Limits for Apache Security文章,其中列出了这些指令:

代码语言:javascript
复制
  # 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的平台

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1097651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档