美文网首页
25.2、HTTP报文、请求方式GET和POST

25.2、HTTP报文、请求方式GET和POST

作者: 一土二月鸟 | 来源:发表于2020-06-26 12:46 被阅读0次

    HTTP

    • http是基于TCP/IP通信协议来传递数据的
    • http是无状态的协议,tcp、web应用是有状态的协议。有状态的意思是每次连接请求都是基于上一次的连接请求决定的。

    HTTP报文

    • HTTP报文是客户端和服务器端之间通信的数据。通过报文客户端会告知服务端其请求的目的,服务端再通过报文将结果返回给客户端。
    • MIME-type 代表传输数据的类型。
    • http报文分为起始行、头部信息、主体信息
      • 起始行存放http协议版本 请求地址 请求方式(get post)信息
      • 头部信息存放配置信息
      • 主体部分存放业务数据
    • 浏览器network中的信息为浏览器加工后的http报文,非原报文信息


    请求报文
    响应报文
    • keep-alive: 代表长连接的意思,意味着在服务器规定的timeout时间内,如果无新的http请求,tcp将会断开连接。在timeout时间内,会重复使用tcp连接,无需重新创建tcp连接。
      • keep-alive需要等待前面的http返回数据后,再发起另一个http请求。但管道化传输是不等待前面的http返回数据,直接按照顺序一个个发送请求。发送请求的同时接受响应。
      • 目前只有欧朋默认支持管道化,其他浏览器都需要进行配置。
    request header
    • 请求头头部信息 是浏览器自动设置的 也可以在客户端手动设置
    • accept:代表服务端可以返回哪些文件类型给客户端
    response header
    • content-encoding:压缩的形式
    • content- type:返回的资源类型和编码格式
    • date:服务器发送的时间
    • server:服务器的名称
    header-General
    • General是从http报文中整理出来的一部分信息,会将请求地址、请求方法、服务器响应码、服务器ip地址等信息放置到general中。

    Get和Post

    • 重要区别:
    • post要比get请求慢一些
      • 在tcp第三次握手时,get会将请求的全部信息发送给服务器,但是post会先将request header发送至服务器进行确认,返回100后,再继续发送请求主体信息。该行为属于浏览器和服务器的内部机制,通过浏览器network无法看到。
      • post要比get请求发送的请求头信息更多一些。
    • get请求会缓存到浏览器本地、post不会
    • post不能进行管道化传输
      • 幂等性:数学中某个数无论多少次方,都等于它自己。这样的数称之为遵守幂等性。(0和1即为有幂等性)
      • http请求中,get请求具有幂等性,post请求不具有幂等性。
      • 管道化传输,如果有一个链接出现异常,会导致整个所有的链接重新请求,这样对于post请求会造成数据紊乱,因此post不支持管道化传输。

    科学上网的原理

    • 利用国外可访问的服务器做代理,访问真正要访问的网站。

    疑惑

    1. 浏览器的最大并发连接数指的是tcp连接还是http连接?
    2. 现代浏览器资源下载是按顺序 还是同时?

      按照keep-alive的规则,图二的请求开始时间不应该是图一的请求开始时间7.58s+右下角的3.86s才对么?为什么图二的请求开始时间和图一几乎是同时的
      -1和1的答案见此链接

    相关文章

      网友评论

          本文标题:25.2、HTTP报文、请求方式GET和POST

          本文链接:https://www.haomeiwen.com/subject/hdayfktx.html