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

java url 请求 最大长度限制_Http请求 url 请求头 请求体 大小长度限制相关推荐

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

    HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生.如果服务器不能 ...

  2. 深入分析Java Web技术内幕读书笔记(一)浅析Web请求过程

    随着Web技术的快速发展,互联网的网络架构已经从传统的C/S架构转变为B/S架构,B/S架构相较于传统的C/S架构,有诸多优点,例如:提供了统一的操作方式,简化了用户的学习成本:便捷的开发方式大大提高 ...

  3. java安装找不到uri,【找不到与请求 URI匹配的 HTTP 资源】(转)

    在.net下,创建一个HTTP服务,有很多方案,比较老ashx,一般处理程序(HttpHandler), Web Service SOAP协议的,数据格式是XML,HTTP协议 WCF 基于SOAP的 ...

  4. CTFHub-SSRF---(Post请求/上传文件/FastCGI/Redis/URL/数字IP/302跳转/DNS重绑定 Bypass)

    目录 一.Post请求 二.上传文件 三.FastCGI协议 四.Redis协议 五.几道IP绕过 1.URL Bypass ​2.数字IP Bypass 3. 302跳转 Bypass 4.DNS重 ...

  5. get/post请求使用工具(apifox/postman/浏览器)能请求通但是java代码不行的问题解决

    目录 1.报错描述 2.代码请求不通,大多数的情况 3.代码请求不通,报错400的情况(重点说明) 1.报错描述 一个接口,使用apifox.postman工具都可以测通: 但是java代码请求不通: ...

  6. python中的请求方法_http协议的9种请求方法

    http协议的9种请求方法 在http/1.1协议中,定义了8种访问指定资源的方法,他们分别为 OPTIONS GET HEAD POST PUT PATCH DELETE TRACE CONNECT ...

  7. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  8. android url拼接参数,【Tech-Android-Other】高效拼接一个GET请求URL

    高效拼接一个GET请求URL private String getUrl(HashMap params) { String url = Constants.URL_CS_DATA; // 添加url参 ...

  9. node.js中获取请求当前页的前一页URL地址

    2019独角兽企业重金招聘Python工程师标准>>> PHP中获取请求当前页的前一页URL地址,用如下代码就可以实现: $_SERVER['HTTP_REFERER'] 在node ...

  10. java option请求_面试官:说说你对 options 请求的理解

    什么是 options 请求 我们可以看下 MDN 中的一段描述: ★ HTTP 的 OPTIONS 方法 用于获取目的资源所支持的通信选项.客户端可以对特定的 URL 使用 OPTIONS 方法,也 ...

最新文章

  1. latin1_swedish_ci gbk_chinese_ci
  2. 如果给你500万,让你朝对象腿上开一枪,你愿意吗?
  3. mysql权限配置文件_MySQL权限管理、配置文件(三)
  4. 混合云部署MySQL集群_数据库混合云解决方案
  5. 巧妙设置yum软件库轻松解决软件包安装问题
  6. 在线阅读!!机器学习数学精华:线性代数
  7. 笨笨图片批量下载器 V0.3 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程] new...
  8. [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio
  9. 阿德莱德计算机科学怎么样,阿德莱德大学计算机科学硕士专业怎么样?成为IT大牛的不二之选...
  10. 8年前端开发的知识点沉淀(不知道会多少字,一直写下去吧...)
  11. 如何查看PDF文件有多少个字?
  12. matlab进行动力吸振器设计,动力吸振器详解.doc
  13. java 静态方法中调用非静态方法
  14. swagger文档增强工具knife4j使用详解
  15. 读javascript高级程序设计12-HTML5脚本编程
  16. python中关于Process finished with exit code -1073740791 (0xC0000409)的解决办法
  17. 词袋模型和空间金字塔模型
  18. vue公共组件封装及传值
  19. 下一次面试前你需要准备的五个基本步骤
  20. python人工智能项目开发实例-人工智能学习路线图,整理近200个实战案例与项目...

热门文章

  1. mod sim tcp配置_ModSim32-ModScan32Modbus调试工具使用及配置说明
  2. 非合作博弈篇——非合作博弈论问题的表示(strategic form)
  3. 快速修改Windows系统字体样式
  4. python封装DM达梦数据库-增删改查
  5. docker 设置阿里云加速器
  6. Conda集成arcpy2.7
  7. Redis客户端工具 支持使用Redis命令行和集群
  8. Java面试时,该如何准备亮点?
  9. GMSSL双证书认证C/S(Linux版)
  10. Typescript入门教程(B站黑马程序员)