• http报文简要分析


    HTTP:Hypertext transport protocal 超文本传输协议报文格式
    http报文格式:
    分为http请求报文和响应报文
    http请求报文分为四个部分

    * 请求行(Request Line)
    * 请求头部(Header)
    * 空行(Blank)
    * 请求数据(Request Body)
    

    其大概的响应字段表示如下:

    如图,是截取的一段JavaEE老师吴志祥的个人教学网站(www.wustwzx.com)的http报文

    http报文中的每个字段都是ASCII码值
    从图中的方框种可以看出请求方法为GET方法,URL为http://www.wustwzx.com/ 协议版本字段为HTTP/1.1

    接下来是请求头,在这种方式下看请求头响应的报文不太清楚,通过fiddler的其他功能得到以下请求头的内容:

    请求头是由关键字和键值组成的键值对可以看出这次http请求中响应的关键字段有以下:
    HOST:服务器的域名和相应的监听端口,如果是80则省略。(此处的域名为www.wustwzx.com)
    Connection:浏览器想要使用的连接类型(此处是keep-alive,就是保持活跃)
    Cache-Control:指定当前的请求或者响应是否启用缓存( max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应)
    Upgrade-Insecure-Requests:1这个字段表示当前的浏览器告诉服务器,它能读懂服务器发过来的信息,但是请他下一次发送的时候用https(相比较http来说更为安全)
    User-Agent: 浏览器的身份标识字符串(后面的信息就是这次抓包的浏览器相应的信息)
    Accept:可接受的响应内容类型(text或者html等。。。)
    Cookie:保存的就是请求时相应的cookie内容
    PS:请求头还有很多其他的类型和说明,可以在https://itbilu.com/other/relate/EJ3fKUwUx.html这里找到相应的参考。

    接下来是响应报文
    响应报文也是由三个部分组成

    * 状态行
    * 消息报头
    * 响应正文
    

    以下截图为响应报文对应的截图:(图中绿色部分为头部信息)

    第一行就是状态行,格式如下:

    HTTP-Version Status-Code Reason-Phrase CRLF
    分别表示响应http的版本,响应状态代码,以及对状态代码的描述。
    可以看出状态代码为200,对状态码的描述为ok,可以看出这次请求已经被服务器理解,接收。
    以下为不同的状态码所表示的信息。(图内容来自http://www.cnblogs.com/biyeymyhjob/archive/2012/07/28/2612910.html)
    响应消息报文,如下:
    其对应的关键字段和表示的信息如下:
    Cache-Control:还是控制页面的缓存,private是其默认值, 这表示打开新窗口会重新访问服务器,而如果定义了Max-age则表示在对应的时间内不会重新访问服务器。
    Content-Length:响应消息长度(注意,是用8进制表示的23706)
    Content-type:响应消息的内容类型,为text/html
    Server:服务器名称(本次回应请求的服务器名称为:Microsoft-IIS/7.5)。
    X-Powered-By: X表示自定义的,这个字段可要可不要,ASP.Net就表示响应消息页面是通过ASP. Net平台开发。
    Date:表示响应时间。

  • 相关阅读:
    FPGA quartus开发中常见的错误处理
    verilog中wire与reg类型的区别
    VC++6.0中ClassView中类消失 解决方案[转自网络]
    C++ 和 MFC的学习
    最近单片机编程中的心得
    #ifdef __cplusplus extern "C" { #endif”的定义的含义
    ES6字符串拼接新方法-模板字符串表达式
    JavaScript事件参数对象event
    JavaScript offset家族
    详解JavaScript中的replace()函数
  • 原文地址:https://www.cnblogs.com/big-bozi/p/6592245.html
Copyright © 2020-2023  润新知