GET 和 POST

浏览器的 GET 和 POST

特指浏览器中 非 Ajax 的 HTTP 请求,即从 HTML 和浏览器诞生就一直使用的 HTTP 协议中的 GET/POST

  • 浏览器用GET请求来获取一个html页面/图片/css/js等资源
  • 用POST来提交一个
    表单,并得到一个结果的网页

GET

读取一个资源,并且反复读取不应该对访问的数据有副作用

因此,可以对 GET 请求的数据做缓存,这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如 nginx),或者做到 server 端(用 Etag,可以减少带宽消耗)

当浏览器发出一个 GET 请求时,要么是用户自己在浏览器的地址栏输入,要不就是点击了 HTML 中 a 标签的 href 的 url,并在后面携带请求的参数

POST

在页面里 标签会定义一个表单,点击其中的 submit 元素会发出一个POST请求让服务器做一件事,得到一个结果的网页

因此,不能随意多次执行,不能做成缓存,如果尝试重新执行 POST 请求,浏览器会弹出一个框提示,是否要继续操作

表单的数据被浏览器编码到 HTTP 请求的 body 里

接口中的 GET 和 POST

是指通过浏览器的 Ajax API或者 Java 的 commons-Httpclient

此时的 GET/POST 请求不光用在前端和后端的交互中,还能用在后端各个子服务的调用中(即当一种 RPC 协议使用)

GET和POST是什么?HTTP协议中的两种发送请求的方法。

HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

GET和POST还有一个重大区别,简单的说:

GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header 和 data 一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,由服务器先检查 header 是否符合要求(如数据的格式是否正确等),符合的话,服务器响应100 continue,浏览器再发送 data,服务器响应 200 (返回数据)

Reference

https://www.zhihu.com/question/28586791

https://www.cnblogs.com/logsharing/p/8448446.html

posted @ 2021-06-25 18:04  -费费  阅读(66)  评论(0编辑  收藏  举报