get请求和post请求的区别
无论是POST还是GET请求,都是基于超文本传输协议(HTTP)的,而HTTP协议是TCP/IP协议族的应用层协议。
从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符,而 POST 没有限制。
从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。
从幂等性的角度,GET
是幂等的,而POST
不是。(幂等
表示执行相同的操作,结果也是相同的,get发送多次请求,返回的结果都是一样的)
从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。(火狐浏览器除外,它的 POST 请求只发一个 TCP 包)
get是明文传输,post请求体会加密传输
请求方法
HTTP协议定义了多种请求方式,具体如下:
GET
:获取资源,用来请求访问已被URI(统一资源标志符,和URL是包含和被包含的关系)识别的资源。
POST
:用来传输实体的主体,虽然GET也可以实现,但是一般不用。
PUT
:传输文件。但是鉴于PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般网站都不采用该方法。
HEAD
:获得报文首部。和GET请求一样,只是不返回报文主体部分。
DELETE
:删除文件。同样不带验证机制,存在安全性问题。
OPTIONS
:询问指定的请求URI支持哪些方法。
TRACE
:追踪路径,让Web服务器将之前的请求通信环回给客户端的方法。
CONNECT
:要求在与代理服务器通信时建立隧道,实现隧道协议进行TCP通信。
POST和GET请求的区别小结
请求参数:GET请求参数是通过URL传递的,多个参数以&连接,POST请求放在request body中。
请求缓存:GET请求会被缓存,而POST请求不会,除非手动设置。
收藏为书签:GET请求支持,POST请求不支持。
安全性:POST比GET安全,GET请求在浏览器回退时是无害的,而POST会再次请求。
历史记录:GET请求参数会被完整保留在浏览历史记录里,而POST中的参数不会被保留。
编码方式:GET请求只能进行url编码,而POST支持多种编码方式。
对参数的数据类型:GET只接受ASCII字符,而POST没有限制。
这里还想补充说明一点,就是通过浏览器地址栏输入URL访问资源的方式都是
GET
请求。