HTTP Get Post究竟有哪些区别
get在浏览器回退时是无害的,而post会再次提交请求。
get产生的url地址可以被bookmark,而post不可以。
get请求会被浏览器主动cache,而post不会,除非手动设置。
get请求只能进行url编码,而post支持多种编码方式。
get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留。
get请求在url中传送的参数是有长度限制的,而post么有。对参数的数据类型,get只接受ascii字符,而post没有限制。
get比post更不安全,因为参数直接暴露在url上,所以不能用来传递敏感信息。
get参数通过url传递,post放在request body中。
(本标准答案参考自w3schools)
get和post还有一个重要区别,简单的说:get产生一个tcp数据包;post产生两个tcp数据包。
get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,post需要两步,时间上消耗的要多一点,看起来get比post更有效。因此yahoo团队有推荐用get替换post来优化网站性能。
但是
1. get与post都有自己的语义,不能随便混用。
2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的tcp在验证数据包完整性上,有非常大的优点。
3. 并不是所有浏览器都会在post中发送两次包,firefox就只发送一次。
HTTP Get Post究竟有哪些区别的更多相关文章
- "=="和 equals 方法究竟有什么区别?
"=="和 equals 方法究竟有什么区别? ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同, 要比较两个基本类型的数据或两个引 ...
- [百家号]雷电3和USB Type-C究竟有什么区别?
雷电3和USB Type-C究竟有什么区别? https://baijiahao.baidu.com/s?id=1617271490773519582&wfr=spider&for=p ...
- "=="和equals方法究竟有什么区别?
(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同, ...
- "=="和equals方法究竟有什么区别
(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同, ...
- 【Java面试题】3 Java的"=="和equals方法究竟有什么区别?简单解释,很清楚
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符. 如果一个变量指向的数据是对象类型的 ...
- java中"=="和equals方法究竟有什么区别?
为什么会说到这个问题呢,是因为在java中遇到这个问题太常见了,无论是在写代码时还是在面试时.下面就一起探讨一下它们之间的联系与区别吧. 首先对于这样的问题,一般是先单独把一个东西说清楚,然后再说另一 ...
- docker的volume和bind mount究竟有什么区别?
不知道你在使用docker的时候,有没有注意到volume mount和bind mount的使用? 进一步说,他们之间的区别到底是什么? 接下来的内容,我们就为你揭开他们的神秘面纱. 相同之处 首先 ...
- 手机的ROM,RAM是各自存放什么?所谓“运行内存”和“机身内存”究竟有什么区别?
手机的内存分为运行内存(RAM)和非运行内存(也叫机身内存.储存空间.ROM) 1.手机的内存,分为存储内存和运行内存,相当于电脑的硬盘和内存条.2.存储内存分为机身内存和存储卡.3.rom是存储内存 ...
- border-radius:50%和100%究竟有什么区别
之前写css圆形时总是直接设置border-radius为50%.后来看某css动画网站时发现作者都是用的100%.遂去了解了一下2者的差别. border-radius的值是百分比的话,就相当于盒子 ...
随机推荐
- Nodejs 使用 es module (import/export)
- appium 报错
2018-11-27 18:05:56:313 - [Logcat] Logcat terminated with code 0, signal null 2018-11-27 18:05:56:31 ...
- apache中如何调用CGI脚本
参考: http://www.jdon.com/idea/cgi.htm http://www.jb51.net/article/49069.htm 在Apache在配置对CGI的支持 LoadMod ...
- 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2
1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 -->sql server 网络配置-->MSSQLSERVE ...
- 流媒体之HLS——综述(二)
[时间:2018-03] [状态:Open] [关键词:流媒体,stream,HLS] 本文是上一篇的后续部分,链接如下:HLS协议综述 2 playlist(m3u8)介绍 HLS中的playlis ...
- Integer.parseInt vs Integer.valueOf
一直搞不清楚这两个有什么区别.刚才特意查了一下帖子. Integer.parseInt 返回的是 primitive int Integer.valueOf 返回的是 Integer Object ...
- Xcode 常用代码段
weak_shortcut /** <#注释#> */ @property(nonatomic,weak) <#class#> *<#name#>; copy_sh ...
- 关于Cocos2d-x-3.16的开发环境搭建
一.需要安装的软件 1.VS2013或者VS2015 2.Cocos:cocos2d-x-3.16:http://www.cocos.com/download 3.Python:python-2.7. ...
- 安装 VMWare ESXi 6.7:VMB: 548: Unsupported CPU:6.7版本的ESXi 不支持 某些cpu了
如题,谨记! 升级是双面刃! 用6.5--版本,即可.
- java生成zip压缩文件,解压缩文件
1.生成zip public static void main(String[] args) { try { // testZip("c:\\temp.txt", "c: ...