• GET 和 POST


    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

    Now is better than never
  • 相关阅读:
    优化索引的常用思路
    MySQL架构说明
    Mysql性能分析必备知识
    查询截取分析
    Mysql之explain
    MyISAM和InnDB的区别
    sql执行顺序(面试常见)
    一个ES设置操作引发的“血案”
    Ubuntu 安装搜狗拼音输入法
    ubuntu 安装SecoClient x64
  • 原文地址:https://www.cnblogs.com/alivinfer/p/14932069.html
Copyright © 2020-2023  润新知