是否有一个可接受的HTTP头的最大允许大小?如果有,是什么?如果不是,这是特定于服务器的东西,还是允许任何大小的头的公认标准?
当前回答
正如vartec上面所说,HTTP规范没有定义限制,但是许多服务器默认情况下是这样做的。这意味着,实际上,下限是8K。对于大多数服务器,这个限制适用于请求行和ALL报头字段的总和(所以保持您的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 bytes\n", pageSize);
return 0;
}
使用gcc -o pagesize pagesize.c编译,然后运行。/pagesize。我在Linode的ubuntu服务器尽职尽责地告诉我答案是4k。
其他回答
不,HTTP没有定义任何限制。然而,大多数web服务器确实限制了它们接受的头文件的大小。例如,在Apache的默认限制是8KB,在IIS是16K。如果报头大小超过限制,服务器将返回413实体过大错误。
相关问题:用户代理字符串可以有多大?
正如vartec上面所说,HTTP规范没有定义限制,但是许多服务器默认情况下是这样做的。这意味着,实际上,下限是8K。对于大多数服务器,这个限制适用于请求行和ALL报头字段的总和(所以保持您的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 bytes\n", pageSize);
return 0;
}
使用gcc -o pagesize pagesize.c编译,然后运行。/pagesize。我在Linode的ubuntu服务器尽职尽责地告诉我答案是4k。
这是最流行的网络服务器的限制
Apache - 8K Nginx - 4K-8K Iis - 8k-16k 雄猫- 8K - 48K 节点(<13)- 8K;(>13) - 16k
HTTP对每个报头的长度没有预先定义的限制 字段或标题节的长度作为一个整体,如所述 第2.5节。对单个头文件的各种特殊限制 场长是在实践中发现的,往往视具体情况而定 领域的语义。
HTTP头值受服务器实现的限制。Http规范不限制头的大小。
接收请求头字段或一组字段的服务器, 大于它希望的进程必须响应一个适当的4xx (客户端错误)状态码。忽略这样的报头字段 增加服务器对请求走私攻击的脆弱性 (9.5节)。
当这种情况发生时,大多数服务器将返回413实体过大或适当的4xx错误。
客户端可以丢弃或截断接收到的报头字段 如果字段语义大于客户端希望处理的值 这样就可以在不更改的情况下安全地忽略掉所删除的值 消息框架或响应语义。
不封顶的HTTP报头大小会使服务器暴露在攻击之下,并降低其服务有机流量的能力。
源
如果您打算使用任何像Akamai这样的DDOS提供商,他们的响应头大小最大限制为8k。所以尽量将响应头大小限制在8k以下。
推荐文章
- 有没有办法在python中做HTTP PUT
- 我能在服务器端应用程序(PHP、Ruby、Python等)上读取URL的哈希部分吗?
- 什么是http头“X-XSS-Protection”?
- 在nodejs http中body在哪里。得到回应?
- Ruby:如何将散列转换为HTTP参数?
- 在用nodejs和express创建的REST API中设置响应状态和JSON内容的正确方法
- 使用curl在PHP中获取HTTP代码
- 为跨源请求设置cookie
- HTTP 1.1和HTTP 2.0的区别是什么?
- 什么是“升级-不安全-请求”HTTP报头?
- 向Angular HttpClient添加一个HTTP头并不会发送这个头,为什么?
- HTTP 301和308状态码有什么区别?
- 什么HTTP状态码应该用于错误的输入
- 编排microservices
- 如何使HTTP请求在PHP和不等待响应