『言善信』Fiddler工具 — 2.补充:HTTP协议介绍(一)

1、HTTP协议介绍

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本(也可以说是资源)到本地浏览器的传送协议。

HTTP协议是基于TCP协议的应用层协议,它不关心数据在底层传输的细节(底层细节需要很多网络方面的知识,这里不扩展说明),主要是用来规定客户端和服务端的数据传输格式(就是定义一种标准),默认端口是80。
http是基于请求与响应模式的、无状态的、应用层的协议。

2、使用Fiddler抓取一个请求

开启Fiddler工具,在浏览器中发送一个HTTP请求,之后在Fiddler中就会抓取到该请求。

双击抓取的请求链接,在右侧窗口就会显示出该请求的请求报文和响应报文内容,如下图:


我们也可以一个请求保存到本地,

选中该HTTP请求,点击右键 —> Save —> Selected Sessions —> as Text...

把该HTTP请求的请求报文和响应报文存储到一个text文件中。

===========请求报文:也就是客户端发给服务器的数据=============
GET http://127.0.0.1:8000/api/departments/ HTTP/1.1 
Host: 127.0.0.1:8000
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9



=========响应报文:=======================
HTTP/1.0 200 OK
Date: Wed, 13 Jan 2021 14:59:00 GMT
Server: WSGIServer/0.2 CPython/3.5.4
Vary: Cookie
Content-Type: application/json
Content-Length: 1789
X-Frame-Options: SAMEORIGIN
Allow: GET, POST, DELETE

{
    "count":3,
    "next":null,
    "previous":null,
    "results":[
        {
            "dep_id":"T02",
            "dep_name":"Java_2学院",
            "master_name":"Java-Master",
            "slogan":"java"
        },
        {
            "dep_id":"T03",
            "dep_name":"Java_3学院",
            "master_name":"Java-Master",
            "slogan":"java"
        },
        {
            "dep_id":"T04",
            "dep_name":"C++/学院",
            "master_name":"C++-Master",
            "slogan":"Here is Slogan"
        }
    ]
}

3、НТТP请求报文

(1)НТТP请求报文说明

HTTP请求报文主要由请求行、请求头部、空一行、请求正文4部分组成。

请求正文也可以说成请求体,请求体可能有如Get请求,也可能没有如POST请求。

HTTP请求报文协议格式:


在Fiddler中抓取的请求中,在请求头部信息中,点击raw选项就可以看到如下信息。

下面一一说明:

(2)请求行

请求行分为三部分:

  • 请求方法:Request Method

    请求方法 备注
    GET 请求资源
    POST 提交资源
    Head 获取响应头
    PUT 替换资源
    DELETE 删除资源
    OPTIONS 允许客户端查看服务器的性能
    TRACE 回显服务器收的请求,用于测试或诊断
  • 统一资源标识符

    名称:Uniform Resource Locator:统一资源定位符。
    作用:用于描述网上的资源。

    格式:schema://host[:port#]/path/.../[?query-string]

    说明:

    schema:协议,如http,https,ftp等。

    host:域名或者IP地址。
    port:端口。
    path:资源路径。
    query-string:发送的参数。
    例如:https://www.baidu.com/s?ie=UTF-8&wd=图片

  • HTТP协议版本:HTTP/1.1是现在比较常用的版本。

(3)请求头(Request Header)

常见请求头属性如下:

  1. Host

    所请求web服务器的IP地址或域名:例:www.baidu.com

  2. User-Agent

    HTTP客户端运行的浏览器类型,详情。

    后台可以根据该头部信息,判断当前的HTTP请求的客户端浏览器类型.

    例如:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36

  3. Accept

    指定客户端能够接受的内容类型,内容类型的先后顺序表示客户端接受的先后顺序。

    比如:Accept:text/html,application/xml

  4. Accept-Charset

    客户端接受的字符集,如gb2312iso-8859-1

  5. Accept-Encoding

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

    允许服务器在将输入内容发送到客户端以前进行压缩,

    以节约带宽,节省传输时间,提交传输效率。

    比如:Accept-Encoding:gzip,deflate

  6. Accept-Language

    指定HTTP客户端浏览器用来展示返回信息所先选择的语言。

    也就是指定客户端接收的语言。

    比如:Accept-Language:zh-cn,zh;q=0.5 后面的q表示权重。

  7. Cookie

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

  8. Referer

    包含一个url,用户从该url的页面触发访问当前请求的页面。

    即从哪个链接过来的。(可以做统计和防止盗链)

  9. Content-Type

    显示此HHTP请求提交的内容类型。

    比如:Content-Type:application/x-www-form-urlencoded;charset:UTF-8

    "application/x-www-form-urlencoded"是浏览器的默认值,表示表单数据向服务器提交时所采用的编码类型。

  10. Content-Length

    用于描述HTTP消息实体的传输长度。

    需要注意的是:在HTTP协议中,消息实体的长度和消息实体的传输长度是有区别的。

    比如说gzip压缩下,消息实体长度是压缩前的长度,但是消息实体的传输长度是gzip压缩后的长度。

  11. Connection

    表示是否需要持久连接。比如:Connection:keep-Alive

  12. X-Requested-With

    用来判断客户端的请求是Ajax请求(异步)还是其他请求(同步)。

    后台可以利用request.getHeader("x-requested-with")为null判断是同步请求,为XMLHttpRequest则是Ajax异步请求。

    例:X-Requested-With:XMLHttpRequest。

  13. Origin

    跨域的时候,get,post都会显示origin,同域的时候get不显示origin,post显示origin。

  14. Authorization:客户端提供服务端,进行权限认证的信息。

  15. Cache-Control:缓存机制,如Cache-Control:no-cache

  16. Pragma:防止页面被缓存,和Cache-Control:no-cache作用一样。

(4)请求体

就是请求需要携带的数据。没什么可说的,有就显示。

你可能感兴趣的:(『言善信』Fiddler工具 — 2.补充:HTTP协议介绍(一))