GET 和 POST的区别

2020-08-25  本文已影响0人  VictorHong
  1. GET请求通过URL(请求行)提交数据,在URL中可以看到所传参数。POST通过“请求体”传递数据,参数不会在url中显示

  2. GET请求提交的数据有长度限制,POST请求没有限制。

  3. GET请求返回的内容可以被浏览器缓存起来。而每次提交的POST,浏览器在你按下F5的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。

  4. GET对数据进行查询,POST主要对数据进行增删改!简单说,GET是只读,POST是写。

get 请求的url是在服务器上有日志记录,在浏览器也能查到历史记录,但是post请求的参数都在body里面,浏览器历史记录不到

如果是指网络安全,那两者一样。 如果考虑到某些服务端和客户端的默认配置和默认使用方式,那么POST在很多时候比GET安全。 而在HTTP的定义中,GET被称为安全方法,POST却不是.

感觉对于服务器更安全的是Get,对于客户端更安全的是Post。

本质上:

首先get和post在本质上都是tcp链接,但由于http协议和浏览器或者服务器的限制,从而使它们在应用过程中产生了差别,但是它们中还有一个较大的区别:get在请求时发送一个数据包,会将header和data一起发送过去,而post会产生两个数据包先发送header,服务器返回100,然后在发送data,服务器返回200

所以当你一层一层的把get和post剖析到底,你会发现他们的本质就是tcp连接,没有啥区别,只是由于http协议规定和浏览器或者服务器的限制,导致他们在应用过程中体现形式不同。

RFC

1.safe(安全)

这里的安全和通常所理解的安全意义不同,就好比如果一个请求的语义本质上就是获取数据(只读),那么这个请求就是安全的。客户端向服务器发起的请求如果没有引起服务器端任何的状态变化,那么他就是安全的而post请求来提交数据必然会是服务器发生相应的变化。从这个维度来看,get请求相对服务器而言,是安全的,post则不安全的。

ldempotend(幂等)

幂等通俗的来讲就是指同一个请求执行多次和仅执行一次的效果完全相等。这里来扯出幂等主要是为了处理同一个请求重复发送的情况,假如在请求响应之前失去连接,如果这个请求时幂等的,那么就可以放心的重发一次请求。所以可以得出get请求时幂等的,可以重复发送请求,post请求时不幂等的,重复请求可能会发生无法预知的后果。

cacheable(可缓存性)

顾名思义,就是一个请求是否可以被缓存,绝大多数部分,post都是不可缓存的(某些浏览器可能支持post缓存),但get是可以缓存的。

勉强理解一下大概就是:

get是请求获取指定资源,get方法时安全、幂等、可缓存的,get方法的报文主体没有任何语义。

post是根据报文主体来对指定资源做出处理,post不安全,不幂等,不可缓存(大部分情况下)。


参考:

  1. 都 2019 年了,还问 GET 和 POST 的区别

  2. POST 方法比 GET 方法更安全吗? 为什么?

  3. get和post的区别?

上一篇下一篇

猜你喜欢

热点阅读