当前位置:首页 > 服务端 > Http请求 url 请求头 请求体 大小长度限制

Http请求 url 请求头 请求体 大小长度限制

2022年09月16日 11:17:13服务端6

HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生。如果服务器不能处理太长的URI的时候,服务器应该返回414状态码(此状态码代表Request-URI太长)。 具体参见协议   ietf.org/rfc/rfc2616.txt 虽然协议中未明确对url进行长度限制,但在真正实现中,url的长度还是受到限制的: 一是服务器端的限制; 二就是游览器端的限制

url长度限制

1,浏览器

浏览器

最大长度(字符)

备注

Internet Explorer 

2083  

 

 Firefox

65,536

 

chrome

8182

 

curl(linux下指令

8167

 

2,服务端

 即使客户端同意发送无限长度的URI,但是服务器一方一般都是有长度限制的。一般服务是没有专门针对URI的参数限制的,但是由于URI是会包含在request header中的,所以对header的大小限制是会对URI起作用的

ps:URI在HTTP协议中是叫做request-Line的,如果具体看协议,是会发现request-Line和request-header是两个不一样的,就是说request的请求其实该分为request-line, request-header, request-body三个部分的但是好像使用的时候都默认将header中理解为包含了request-line。

Header

     header中存放的信息非常多,比如request-line,cookie,还有各种key-value的特定header字段和值。有点时候,我们也会往header中添加一些自定义的属性。header的长度和URI的情况是一样的。协议中并没有显示限制header的大小。理论上在header中放多少属性都是可以的。但是......

  2.1 nginx

  large_client_header_buffers 7 512k; //该参数对nginx服务器接受客户端请求的头信息时所分配的最大缓冲区的大小做了限制,也就是nginx服务器一次接受一个客户端请求可就收的最大都信息大小。这个头不仅包含 request-line,还包括通用信息头、请求头域、响应头域的长度总和。这也相当程度的限制了url的长度。nginx服务器默认的限制是4K或者8K,这是根据服务器的硬件配置有关的,一般为内存一页的大小,目前大部分为4K,即4096字节。

client_header_buffer_size 512k; //该参数对发自客户端的http头信息的大小进行了限制,这个值和large_client_header_buffers同时限制了http请求头的大小,超过其中一个值则服务器会返回错误状态码 414(Request-URI Too Large)。该参数的默认值为1K

2.2 tomcat

LimitRequestLine //从定义来看,这个选项限制的并不是url的长度,也不是head头的长度,而是是http请求中 request-line的长度(相关定义:http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1)。即:Request-Line = Method SP Request-URI SP HTTP-Version CRLF 的长度。但这很大程度上也就限制的GET、HEAD请求的参数长度,因为GET和HEAD请求是不会向服务器发送消息实体(message-body)的。可以说这个限制就是限制了url的长度不能超过该设定的值,如果超过了,服务器会返回错误状态码 414(Request-URI Too Large)。tomcat(8.0版本)允许的http请求header的最大值是8024个字节(8KB) maxHttpHeaderSize="3145728" --可以设置这个控制请求url长度

post

nginx服务器

在nginx的配置文件中进行配置,限制请求报文体的大小,nginx默认大小是1M,相当于是限制了post方式提交内容的最大限制。 client_max_body_size   20m; //可以在http、server、location中加入此配置。 tomcat服务器  整个消息体限制 LimitRequestBody  这个参数限制了http请求可以被接受的最大消息大小,默认是无限大的,但是其实这个无限也是有限的,最大不能超过2G。

tomcat默认设置表单提交数据大小上限为2m,数据大于2m,java后台将接收不到数据,解决办法是修改tomcat的server.xml中maxPostSize的值,将其设置为0即为无上限,7.0 以上版本 maxPostSize 设置为 -1

Cookie的长度限制

(1) 浏览器所允许的每个域下的最大cookie数目,没有去自己测试,从网上找到的资料大概是这么个情况

  • IE :原先为20个,后来升级为50个
  • Firefox: 50个 Opera:30个
  • Chrome:180个
  • Safari:无限制

当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。

(2) 浏览器所允许的每个Cookie的最大长度

  • Firefox和Safari:4079字节
  • Opera:4096字节
  • IE:4095字节

(3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。

Html5 LocalStorage

Html5提供了本地存储机制来供Web应用在客户端存储数据,尽管这个并不属于Http协议的一部分,但是随着Html5的流行,我们可能需要越来越多使用LocalStorage,甚至当它普及的时候跟它打交道就会同今天我们跟Cookie打交道一样多。

对于LocalStorage的长度限制,同Cookie的限制类似,也是浏览器针对域来限制,只不过cookie限制的是个数,LocalStorage限制的是长度: Firefox\Chrome\Opera都是允许每个域的最大长度为5MB,但是这次IE比较大方,允许的最大长度是10MB 

作者:cf-ing
来源链接:https://blog.csdn.net/cf18435109165/article/details/106918852

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/41758.html

标签: HTTP
分享给朋友:

“Http请求 url 请求头 请求体 大小长度限制” 的相关文章

对称与非对称加密;SSL;HTTPS;AJP

1.对称加密就是加密与解密的时候都是用一个密码 2.非对称加密,有一对密码A,B;用A加密就得用B解密,相对的用B加密就得用A解密 3.公钥与私钥,这一对密码,随便拿一个公布出去,那个就是公钥,剩下一个是私钥。 4.应用1:我想给一个人发信息,我就去拿他公布出来的公钥...

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

前言   系列文章:[传送门]   洗了个澡,准备写篇博客。然后看书了。时间 3 7 分。我慢慢规律生活,向目标靠近。                       &n...

通过idea发送HTTP请求

通过idea发送HTTP请求

通过idea发送HTTP请求 我们测试自己写的接口时候经常会用到postman等工具构造请求,来检验接口是否正确,postman很方便,但是idea也自带了这种功能 打开后是这样子: 这里能看到返回结果: 也可以这种形式,点击这里...

idea -- 激活码网站:http://blog.haoservice.cn/archives/6562

LGWSVFD4PZ-eyJsaWNlbnNlSWQiOiJMR1dTVkZENFBaIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25l...

图解springboot后端发送HttpGet和HttpPost请求

图解springboot后端发送HttpGet和HttpPost请求

图解springboot后端发送HttpGet和HttpPost请求 [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/My...

RabbitMQ安装后无法访问https://localhost:15672/ 控制台问题解决

1.安装完后 我们进入到我们安装到 sbin目录C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.2\sbin执行:rabbitmq-plugins enable rabbitmq_management ...

Chrome Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101

Chrome中有时Ajax请求会出现这种错误“Uncaught Error: NETWORK_ERR: XMLHttpRequest”。   出现这类情况大概有这几种: 1:Web页面中请求本地文件数据【如请求的url:file:///c://1.txt】...

IDEA:http://fls.jetbrains-agent.com-- No response

起因: win10电脑关机,打开,自动更新了系统。 (误删除vmoptions的-javaagent 绿色 jar包,也会出现↓。。。) [ 2022年1月14日改vmoptions这玩意又替换的别人后而忘了加 -javaagent:D:\idea\je...

微信开发的Http或Https常用工具类

前不久写了几篇有关微信定制开发的文章并整理成了专题,里面所有的文档都提到了CommonUtil这个工具类,关于这个工具类原本有写但是不是每篇博客都有,所以就有人找我要这个工具类,评论里也有好多人说不知道这个工具类怎么写,因此针对这些疑问就特意给大家贴一下代码 1  ...

HTTP协议-Cookie和Session详解

HTTP协议-Cookie和Session详解

前言: 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的跟踪技术就是Cookie和Session。 Cookie通过在客户端记录信息确定用户身份,Session通过在服务器记录确定用户身份。 本章将系统的讲述Cookie和Sessio...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。