关于get请求的长度限制到底是多少?—-一个误区,一个教训

关于get请求的长度限制到底是多少?—-一个误区,一个教训截至今日之前,我一直因为从某处看到get、post区别中写的:get有长度限制,1024B。很抱歉在未经过个人的检验后,直接奉为正确的定义(也提醒我个人:以后概念理论,还是需要好好验证或求证,要能在繁杂的网络知识中,认真求真,以防以讹传讹!!!)。今日,看到前同事大牛多年前的csdn知识总结,发现原来一直信奉的1024Get请求长度,是错误的。下面把从权威官网的解释复制过来,以做…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

截至今日之前,我一直因为从某处看到get、post区别中写的:get有长度限制,1024B。很抱歉在未经过个人的检验后,直接奉为正确的定义(也提醒我个人:以后概念理论,还是需要好好验证或求证,要能在繁杂的网络知识中,认真求真,以防以讹传讹!!!)。

       今日,看到前同事大牛多年前的csdn知识总结,发现原来一直信奉的1024Get请求长度,是错误的。下面把从权威官网的解释复制过来,以做更正。
       1、Http get方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制。
            目前说的get长度有限制,是特定的浏览器及服务器对它的限制。
        各种浏览器和服务器的最大处理能力如下:
        IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。
        Firefox:对Firefox浏览器URL的长度限制为:65536个字符。
        Safari:URL最大长度限制为80000个字符。
        Opera:URL最大长度限制为190000个字符。
        Google(chrome):URL最大长度限制为8182个字符。
        Apache(Server):能接受的最大url长度为8192个字符(这个准确度待定???)
        Microsoft Internet Information Server(IIS):n能接受最大url的长度为16384个字符。
        2、理论上讲,post是没有大小限制的。Http协议规范也没有进行大小限制,起限制作用的是服务器处理程序的处理能力。
        Tomcat下默认post长度为2M,可通过修改conf/server.xml中的“maxPostSize=0”来取消对post大小的限制。
 
 
注意:(若长度超限,则服务端返回414标识)
1、首先即使有长度限制,也是限制的是整个URI长度,而不仅仅是你的参数值数据长度。
2、HTTP协议从未规定GET/POST的请求长度限制是多少
3、所谓的请求长度限制是由浏览器和web服务器决定和设置的,浏览器和web服务器的设定均不一样,
     这依赖于各个浏览器厂家的规定或者可以根据web服务器的处理能力来设定。
 
GET VS POST扩展:
1、多数浏览器对于POST采用两阶段发送数据的,先发送请求头,再发送请求体,即使参数再少再短,也会被分成两个步骤来发送(相对于GET),也就是第一步发送header数据,第二部再发送body部分。Http是应用层的协议,而再传输层有些情况TCP会出现两次连结的过程,http协议本身不保存状态信息,一次请求一次响应。对于TCP而言,通信次数越多反而可靠性越低,能在一次连结中传输完需要的信息是最可靠的,所以尽量使用GET请求来减少网络耗时。如果通信时间增加,这段时间客户端于服务器端一直保持连接状态,在服务器侧负载可能会增加,可靠性会下降。
2、GET请求能够被cache,GET请求能够被保存在浏览器的浏览历史里面(密码等重要数据GET提交,别人查看历史记录,就可以直接看到这些私密数据)POST不进行缓存。
3、GET参数是带在URL后面,传统IE中URL的最大可用长度为2048字符,其他浏览器对URL长度限制实现上有所不同。POST请求无长度限制(目前理论上是这样)。
4、GET提交的数据大小,不同浏览器的限制不同,一般在2k-8k之间,POST提交数据比较大,大小靠服务器的设定值限制,而且某些数据只能用POST方法【携带】,比如file。
5、全部用POST不是十分合理,最好先把请求按功能和场景分下类,对数据请求频繁,数据不敏感且数据量在普通浏览器最小限定的2k范围内,这种情况使用GET。其他地方使用POST。
6、GET的本质是【得】,而POST的本质是【给】。而且,GET是【幂等】的,在这一点上,GET被认为是【安全的】。实际上server端也可以用作资源更新,但是这种用法违反了约定,容易造成CSRF(跨站请求伪造)。

转载于:https://www.cnblogs.com/elian91/p/11125201.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172526.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月24日 下午3:00
下一篇 2022年8月24日 下午3:00


相关推荐

  • 【POI框架实战】——POI导出Excel时设置单元格类型为数值类型

    【POI框架实战】——POI导出Excel时设置单元格类型为数值类型最近做的一个 ITFIN 的项目中 导出的数据中有文本格式 也有货币格式 所以为了方便在将来导出的表格中做计算 存放货币先用正则表达式判断数据是否为数值型 如果为数值型 则设置单元格格式为整数或者小数 然后往单元格中存放数据的时候要设置数据的格式为 double 类型 如果查看 poi 的源码 HSSFCell java 会发现设置数据的方法如下 所以用 setCellValue double 方法即可

    2026年3月18日
    3
  • js 双向绑定数据

    js 双向绑定数据

    2021年6月13日
    115
  • Delphi2007卸载

    Delphi2007卸载br nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp br 如果您之前已经安装过个人版 请按照下列步骤清理后方可正常安装企业版 br 1 启动 D2007Tweaks exe 击 Advancedtwea 选项卡 在 Removelicens 复选框上去掉已经打上的对勾 点击 OK br 2 卸载 Delphi2007fo br 3 删除 C Documentsand AllUsers ApplicationD AB3EC276

    2026年3月19日
    2
  • JWT 单点登录(项目实现)「建议收藏」

    JWT 单点登录(项目实现)「建议收藏」下面以实际项目中的应用分析,首先看一下大致的数据流图:一、实现思路1、项目一开始我先封装了一个JWTHelper工具包,主要提供了生成JWT、解析JWT以及校验JWT的方法,其他还有一些加密相关操作,后面我会以代码的形式介绍下代码。工具包写好后我将打包上传到私服,能够随时依赖下载使用;2、接下来,我在客户端项目中依赖JWTHelper工具包,并添加Interceptor拦截器,拦截需要校验登录的接口。拦截器中校验JWT有效性,并在response中重新设置JWT的新值;3、最后在JWT服

    2022年5月11日
    43
  • Vue slot 插槽

    Vue slot 插槽插槽 1 普通插槽 DOCTYPE tml htmllang en head metacharset UTF 8 metaname viewport content width device width initial scale 1 0 metaname viewport content width device width initial scale 1 0 metacharset UTF 8 head htmllang en

    2026年3月17日
    1
  • 宝塔卸载命令_linux如何永久停用mysql

    宝塔卸载命令_linux如何永久停用mysql宝塔面板(linux)卸载方法及卸载后文件删除我们说过很多宝塔面板的教程,貌似没说过如何卸载宝塔面板,假如我们装置一款面板,都会请求要洁净纯洁的系统,就是说,假如你装置过环境可能会招致装置不胜利。宝塔面板能够装置,当然也能够卸载,官方也给出了卸载脚本,今天把这些办法罗列下写在这里。一:脚本卸载你需要先在面板中将通过面板安装的所有软件卸载,如nginx、mysql、php等等,然后,进入SSH…

    2025年9月18日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号