GET和POST区别

GET和POST区别

参考链接

  1. 浏览器的GET和POST(原则上)

get:读取一个资源(页面、css、js、图片),具有幂等性,适合做缓存(浏览器缓存、nginx等服务器缓存),请求参数只能通过url,不同浏览器长度有限制

post:提交一个表单,返回一个页面,不幂等,不适合缓存,请求参数放在HTTP的body里,有两种格式application/x-www-form-urlencoded(key=value格式,可以嵌套)、multipart/form-data(文件类型)

get参数可以放在body里,post参数也可以放在url里,只是在浏览器请求中适用

  1. 接口中的GET和POST

没有浏览器请求的限制,get参数可以放在body里,post参数也可以放在url里

elasticsearch中的部分GET请求就有body

太自由也会有麻烦,所以有了接口规范/风格,比如RESTFUL,约定GET、POST、PUT和DELET分别表示获取、创建、替换和删除“资源”

  1. 安全性

GET和POST都不够安全,因为两种请求在网络上都是http明文传输数据的,

可以使用https,TSL(握手协议)/SSL(加密解密协议)

  1. 编码

url的编码是ASCII,body体的编码是binary

在url的中文,不同浏览器会按不同的编码集编码(现在大多数是utf8),所以尽量不要用中文

body体里的编码会在Content-Type里定义,比如

Content-Type: application/x-www-form-urlencoded ; charset=UTF-8

  1. POST会发两次请求吗

客户端会根据一定的策略,根据请求数据的大小,决定请求头和请求体一起发送到服务器,还是先发送请求头,在发送请求体

  1. URL长度是由不同浏览器决定的,HTTP协议没有规定,但是当URL请求长度比较长时,可以放到请求体中
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容