前端之家收集整理的这篇文章主要介绍了
get 和 post,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<table class="text"><tbody><tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
提取一个发送,GET和POST只是发送机制不同。
2 POST的安全性要比GET的安全性高;
因为使用GET,参数会直接暴露在URL上,所以不能用来传递敏感信息。
3 GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),其中%XX中的XX为该符号以16进制表示的ASCII,
?分割URL和传输数据,参数之间以&相连;
POST把提交的数据则放置在是HTTP包的包体中。
4 根据HTTP规范,GET用于信息
获取。换句话说,GET 请求一般不应产生副作用,它是安全的和幂等的,
(幂等:幂等的意味着对同一URL的多个请求应该返回同样的结果,一个数学或计算机学概念,常见于抽象代数中。)
就是说,它仅仅是
获取资源信息,就像
数据库查询一样,不会
修改,
增加数据,不会影响资源的状态;
根据HTTP规范,POST表示可能
修改变服务器上的资源的请求。
比如:网站对
评论区应该通过POST实现,因为在
评论提交后
站点的资源已经不同了,或者说资源被
修改了。
二 Ajax中GET与POST的区别:
1 对于get方式,服务器端用Request.QueryString
获取变量的值,
对于post方式,服务器端用Request.Form
获取提交的数据。
但两种方式的参数都可以用Request来获得。
2 GET方式对传输的数据大小有限制,通常不能大于2KB,传送简单数据,效率较高,安全性低,会被缓存;
而POST方式传递的数据量要比GET方式大得多,
但理论上不受限制,实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。
注意:
1 GET和POST是什么?HTTP协议中的两种发送请求的
方法。
2 HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
3 HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP
链接。
4 GET和POST能做的事情是一样的。给GET
加上request body,给POST带上url参数,技术上是完全行的通的。
5 在万维网世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。
6 HTTP就像是一个规则,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的
标签(设置method为GET)。
7 HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本!
8 不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司;
虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。但是运输公司可不傻,
装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。
所以,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大 小的url。超过的部分,恕不处理。
9 如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,
有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。
10 GET和POST本质上就是TCP
链接,并无差别。
但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
11 GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包!
详细的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200(返回数据)。
12 因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站
性能。但这是一个坑!跳入需谨慎。为什么?
· GET与POST都有自己的语义,不能随便混用。
· 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
· 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
!!!现在的话,并不一定符合了,测试发现Chrome和Firefox都不会让ajax发送2个packet 原文链接:https://www.f2er.com/note/421475.html