http标头值最大?

HTTP标头是否有可接受的最大允许尺寸? 如果是这样,那是什么? 如果不是,这是服务器特定的还是允许任何大小的标头的公认标准?


不,HTTP没有定义任何限制。 但是,大多数Web服务器确实会限制他们接受的标头大小 例如,在Apache中,默认限制是8KB,在IIS中是16K。 如果标题大小超过此限制,服务器将返回413 Entity Too Large错误。

相关问题:用户代理字符串可以有多大?


正如vartec上面所说的,HTTP规范没有定义限制,但是很多服务器默认都是这样做的。 这意味着,实际上,下限是8K 。 对于大多数服务器,此限制适用于请求行和所有标题字段总和 (因此请保持您的Cookie较短)。

  • Apache 2.0,2.2: 8K
  • nginx: 4K - 8K
  • IIS:根据版本不同, 8K - 16K
  • Tomcat:根据版本不同而变化, 8K - 48K(?!)
  • 值得注意的是,nginx默认使用系统页面大小,大多数系统都是4K。 你可以检查这个小程序:

    pagesize.c:

    #include <unistd.h>
    #include <stdio.h>
    
    int main() {
        int pageSize = getpagesize();
        printf("Page size on your system = %i bytesn", pageSize);
        return 0;
    }
    

    使用gcc -o pagesize pagesize.c编译,然后运行./pagesize 。 我的Linode的ubuntu服务器忠实地告诉我答案是4k。


    如2.5节所述,HTTP不会对每个头部字段的长度或头部部分的长度进行预定义的限制。 在实践中发现各个标题字段长度的特别限制,通常取决于具体的字段语义。

    HTTP标头值受服务器实现的限制。 Http规范不限制标题大小。

    接收到一个大于它希望处理的请求头字段或一组字段的服务器必须用适当的4xx(客户端错误)状态码进行响应。 忽略这样的头字段会增加服务器的漏洞以请求走私攻击(第9.5节)。

    发生这种情况时,大多数服务器将返回413 Entity Too Large或4xx错误。

    客户端可以丢弃或截断大于客户端希望处理的接收到的头部字段,如果字段语义是这样的,即在不改变消息成帧或响应语义的情况下可以安全地忽略丢弃的值。

    不加限制的HTTP标头大小可以使服务器免受攻击,并可降低其服务有机流量的能力。

    资源

    链接地址: http://www.djcxy.com/p/12351.html

    上一篇: Maximum on http header values?

    下一篇: What is the maximum length of a URL in different browsers?