• http中请求报文request headers和响应报文response headers


    一、构成HTTP请求的简单流程图(图摘录的),如下:

     Web Client可以是浏览器、搜索引擎、机器人等等一切基于HTTP协议发起http请求的工具。Web Server可以是任何的能解析HTTP请求,并返回给Web Client可识别的响应的服务,常见的有apache、nginx、IIS等等web服务器

    二、客户端跟服务的交互

      

      要看图还不明白中过程的话,那就更通俗的理解为:

    • 在浏览器中输入URL,并按下回车键
    • 浏览器向DNS服务器请求解析该URL中的域名对应的IP地址(如果是IP请求,则不需要该步骤)
    • 解析出IP后,根据IP和端口号,和服务器建立TCP连接
    • 浏览器向服务器发送请求,该请求报文作为TCP三次握手的第三个报文发送给服务器
    • 服务器做出响应,把数据发送给浏览器
    • 通信完成,断开TCP连接
    • 浏览器解析收到的数据并显示  

      

    从中就可以延伸出以下要说的内容了。也就是交互直接的报文,这里就简单说说其中请求报文跟响应报文,主要也是方便新手简单了解下,具体的底层还是得自己去查阅资料

    response headers响应报文

    当收到get或post等方法发来的请求后,服务器就要对报文进行响应。

    用于在http请求中服务器向浏览器传递附加信息,主要包括服务器传递的数据类型,使用的压缩方法,语言,以及服务器的信息和响应该请求的时间等.

    以下为response 属性

     

    属性名称

    意义

    示例

    Accept-Ranges

    Web服务器表示自己是否接受获取某个实体的一部分(比如文件的一部分)的请求

    bytes:接受 none:不接受

    Accept-Ranges:bytes

    Access-Control-Allow-Origin

    指定哪些网站可以跨域源资源共享

    Access-Control-Allow-Origin:*

    age

    响应对象在代理缓存中存在的时间,以秒为单位

    Age:234585576

    Access-Control-Allow-Methods

    允许的http请求方法

    Access-Control-Allow-Methods: POST, GET, OPTIONS

    Allow

    Allow支持标题列出资源集合的方法。

    Allow: GET, POST, HEAD

    Connection

    告诉WEB服务器或者代理服务器,在完成本次请求的响应 后,该做什么

    close:断开连接,不要等待本次连接的后续请求了

    keep-alive:保持连接,等待本次连接的后续请求

    Connection: keep-alive

    Cache-Control

    通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒

    no-cache:可以在本地进行缓存,但是每次发起请求都需要到服务器去验证一下,如果服务器返回告诉你可以使用本地缓存,你才可以去使用本地的缓存

    no-store:本地不可进行缓存的,每次发起请求,都需要去服务端去拿去数ju

    public:在HTTP请求返回的内容经过的所有路径中,都可以对返回内容进行一个缓存的操作。

    private:只有发起请求的浏览器才可以进行缓存

    max-age=<seconds>:缓存多少秒之后才会过期。

    s-maxage=<seconds>:它会替代max-age,但是只有在 代理服务器中才会起作用。

    max-stale=<seonds>:当我们缓存过期以后,如果有max-stale,只要在max-stale这个时间之内,还会使用过期的缓存。只有在发起端设置才有用,在服务端设置没有用。

    must-revalidate:如果我们的和缓存过期了,我们必须重新发送到源服务端,重新获取这部分数据,来验证这部分数据是否真的过期了

    proxy-revalidate:用在缓存服务器中,缓存过期后,必须要去源服务器上重新请求一次,而不能使用本地的缓存

    Cache-Control:no-cache

    Content-Type

    服务器告诉浏览器它发送的数据属于什么文件类型,也就是响应数据的MIME类型
    格式:Content-Type:type/subtype ;parameter

    type:主类型,任意的字符串,如text,如果是*号代表所有;

    subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开;

    parameter:可选参数,如charset,boundary等。

    Content-Type:

    application/json;charset=utf-8

    content-length

    响应数据的数据长度,单位是byte

    content-length: 0

    Content-Encoding

    服务器采用哪种编码格式传输正文

    其值有:gzip;x-gzip;compress等

    Content-Encoding:gzip

    Date

    响应消息发送的GMT格式日期

    date: Mon, 06 May 2019 22:48:29 GMT

    ETag

    就是一个对象(比如URL)的标志值

    主要供 WEB 服务器 判断一个对象是否改变了

     

    Expired

    告诉客户端该响应数据会在指定的时间过期,通常用于给客户端缓存作为参考。

    expires:

    Thu, 28 Jun 2018 11:27:53 GMT

    via

    告诉客户端,该回应经历了那些代理。

    Via: 1.0 example1.com, 1.1 example2.com (Apache/1.1)

    status

    返回的状态码

    Status:200

    Server

    服务器名称(服务器通过这个头告诉浏览器服务器的类型)

     

    request headers请求报文

    对于request headers可以理解为用于在请求消息中向服务器传递附加信息,主要包括客户机可以接受的数据类型,压缩方法,语言,以及客户计算机上保留的信息和发出该请求的超链接源地址等

    请求头由key/value对组成,每行为一对,key和value之间通过冒号(:)分割。请求头的作用主要用于通知服务端有关于客户端的请求信息

    request headers属性

     
         

    Accept

    指定客户端能够接收(支持)的数据类型

    Accept:

    */*



    Accept-Encoding

    指定浏览器可以支持的web服务器返回内容压缩编码类型

    Accept-Encoding:

    gzip, deflate, br

    Accept-Language

    浏览器所希望的语言种类

     

    Cache-Control

    缓存机制,服务器通过控制浏览器要不要缓存数据

    Cache-Control:

    max-age=0

    Connection

    表示是否需要持久连接。(HTTP 1.1默认进行持久连接)

    Connection:

    keep-alive

    Cookie

    HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。

     

    Host

    指定请求的服务器的域名和端口号

    Host:

    www.baidu.com

    Referer

    包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

     

    From

    请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。

     

    Upgrade-Insecure-Requests:参考http://www.cnblogs.com/hustskyking/p/upgrade-insecure-requests.html

    User-Agent:告诉服务器,客户机的软件环境

    这里是response headers和request headers中所能触及到的大部分内容,其中在response headers中Access-Control-Allow-Origin可以解决一些跨域问题,Allow和请求方法有关,cache-control和缓存有关等等,知道这些应该对之后的接口连接有一些帮助,希望能帮助到大家~

  • 相关阅读:
    2月16号
    2月15号
    dubbo与springmvc的简单使用
    dubbo与zookeeper学习中的问题
    linux下jdk与tomcat的安装与配置
    mysql存储引擎
    mysql存储过程
    mysql子查询与连接查询
    mysql简单增删改查(CRUD)
    SpringMvc执行流程
  • 原文地址:https://www.cnblogs.com/zhilu/p/13804889.html
Copyright © 2020-2023  润新知