1
GET
请求,请求的数据会附加在
URL
之后,以
?
分割
URL
和传输数据,多个参数⽤
&
连接。
URL
的编码 格式采⽤的是ASCII
编码,⽽不是
uniclde
,即是说所有的⾮
ASCII
字符都要编码之后再传输。
POST
请求:
POST
请求会把请求的数据放置在
HTTP
请求包的包体中。上⾯的
item=bandsaw
就是实际的传输数据。
因此,
GET
请求的数据会暴露在地址栏中,⽽
POST
请求则不会。
2
传输数据的大小在HTTP
规范中,没有对
URL
的⻓度和传输的数据⼤⼩进⾏限制。但是在实际开发过程中,对于
GET
,特定的浏览器和服务器对URL
的⻓度有限制。因此,在使⽤
GET
请求时,传输数据会受到
URL
⻓度的限制。
对于
POST
,由于不是
URL
传值,理论上是不会受限制的,但是实际上各个服务器会规定对
POST
提交数据⼤⼩进⾏限制,Apache
、
IIS
都有各⾃的配置。
3
POST
的安全性比
GET
的⾼。这⾥的安全是指真正的安全,⽽不同于上⾯
GET
提到的安全⽅法中的安全,上⾯提到的安全仅仅是不修改服务器的数据。⽐如,在进⾏登录操作,通过GET
请求,⽤户名和密码都会暴露再URL
上,因为登录⻚⾯有可能被浏览器缓存以及其他⼈查看浏览器的历史记录的原因,此时的⽤户名和密码就很容易被他⼈拿到了。除此之外,GET
请求提交的数据还可能会造成
Cross-site request frogery攻击