为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容森 2019-11-13 13:48:45
我有一个Web应用程序,它使用setRequestHeader API 将上下文信息添加到XmlHttpRequest对象。我正在使用自定义标头名称(例如X-Foo)和JSON结构化值。它不是URL QueryString或POST正文的一部分,因为它是有关请求的元信息。标头值有实际的大小限制吗?如果我的JSON被截断,它将变得不可解析。我最关心的是Apache 2,Tomcat 6和IIS 7中的限制。我在Google搜索了http标头的长度限制,但其中许多结果似乎都过时了。用户代理字符串可以达到多大?有一些相关注释。但没有我想要的那么具体。
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

尽管每种Web服务器软件都有一些限制,但是HTTP请求行加标头字段或每个标头字段是否有限制是有区别的。


总结如下:


的Apache 1.3,2.0,2.2,2.3:8190字节(对于每个报头字段)

IIS:

4.0:2097152字节(用于请求行和标题字段)

5.0:131072字节,Windows 2000 Service Pack 4带16384字节(用于请求行和标题字段)

6.0:16384字节(用于每个标头字段)

Tomcat:

5.5.x / 6.0.x:49152字节(用于请求行和标题字段)

7.0.x:8190字节(用于请求行和标题字段)

得出以下结论:要被以上所有Web服务器接受,请求的请求行加上标题字段不得超过8190 Bytes。这也是每个标头字段的限制(实际上更少)。


查看完整回答
反对 回复 2019-11-13
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

对于Apache,我找到了这篇Apache安全服务器限制文章,其中列出了以下指令:


  # 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指令对此进行控制:


请求的最长标头行也必须不超过一个缓冲区的大小,否则客户端将收到错误“错误的请求”(400)。


默认情况下,一个缓冲区的大小等于页面的大小,具体取决于平台是4K还是8K


查看完整回答
反对 回复 2019-11-13

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信