美文网首页Spbeen——Python技术栈
【编号0002】请求头都含有哪些内容字段,怎么理解?

【编号0002】请求头都含有哪些内容字段,怎么理解?

作者: 布拉豆 | 来源:发表于2019-07-21 11:42 被阅读0次

    更新时间,来一篇关于请求头的内容介绍

    首先,什么是请求头?这里指的是HTTP 1 版本中的请求信息的头部内容,注意,不含主体

    0. 背景说明

    • 客户端:你的浏览器

    • 服务器:指的是网站服务器

    • 请求:客户端发送给服务器

    • 响应:服务器发给客户端

    下图中给出的内容,就是关于请求头的一个示例,抓包工具是浏览器 > 调试工具 > 网络栏:

    1.png

    先看图中内容,高亮区域有三个框,分别是General、Response Headers和Request Headers。这里,只看第三个,Request Headers 请求头信息

    主:请求头信息介绍

    截图中,请求头信息只有9个,分别是:Accept、Accept-Encoding、Accept-Language、Cache-Control、Connection、Cookie、Host、Upgrade-Insecure-RequestS、User-Agent,这是常用的主要内容,下面就拖这些及一些主要字段做介绍

    1. Accept:接收

    这里面是一些声明信息,就是客户端在请求时,浏览器会自动的在请求头中,注明他能接受的类型信息,例如编码是gzip,语言是zh-CN

    解释 示例
    Accept 指定客户端能够接收的内容类型 Accept: text/html,application/json
    Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: gzip
    Accept-Language 浏览器可接受的语言 Accept-Language: zh-CN

    2. User-Agent:用户代理

    值:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

    每个浏览器都有特定的User-Agent,例如上述的值,包含了操作系统信息(Windows NT 10.0; Win64; x64)、浏览器信息Chrome/75.0.3770.142

    3. Connection:连接

    在HTTP的请求中,一次完整的请求是:客户端发起请求,服务端返回响应,完成后并关闭连接。这是一次最简单的请求了。

    但是通常请求并非一次就可以完成,所以如果需要有连续的请求,则请求时,可以将Connection设置成keep-alive,则在连接保持期间,请求的响应速度,会得到更快的响应速度。

    <u style="box-sizing: border-box;">Tips:维持时间是3000ms</u>

    同样的,有保持连接,就有关闭连接,Connection有两个值,一个是keep-alive;另一个是close;

    当值为close时,每次请求,都会发起TCP链接。

    4. Host:主机

    这个值就是请求网址的域名信息,例如:

    • http://www.spbeen.com/p/d974cd56-388b-49ba-a75c-1b5a9896183c的host,是www.spbeen.com

    • http://127.0.0.1:8000/admin的host,是127.0.0.1:8000,注意要包含端口

    5. Referer:来源

    浏览器打开了网页a,然后在Referer上看到了网页b的连接,然后就访问了网页b

    那就在这个发送请求给服务器要网页b的内容时,请求头的Referer就要上网页a的值,因为是从网页a上获得的网页b的连接

    6. Cookie:饼干

    cookie这个比较重要,是浏览器用于保存重要信息的,例如登录后的身份信息,就放在cookie里面

    cookie的内容,可以非常的多,格式:“ a=b; c=d; e=f; ”,用分号进行分割;

    <u style="box-sizing: border-box;">cookie的工作原理:就是当HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。</u>

    7. Upgrade-Insecure-Requests:

    值:1

    这条信息是告诉服务器,自己支持安全的HTTP操作,也就是支持HTTPS协议,并且可以再以后发请求的时候不用http而用https

    8. Proxy-Authorization

    这个信息比较特殊,也就是一个代理的身份认证信息,这个的使用方式,通常是配合请求时使用的代理来工作的,步骤如下:

    1. 请求时,将代理ip信息、请求头的Proxy-Authorization认证信息,一并带上

    2. 然后请求被发往代理IP服务器上

    3. 服务器读取请求头中的Proxy-Authorization信息

    4. 识别身份,去掉请求头中的代理身份信息

    5. 转发请求到真正的目的地

    6. 拿到响应后,将响应转发给客户端

    解释:连接到代理的授权证书

    常见值:Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 【后续的值,通常是base64编码】

    辅一:General

    先上图,在介绍

    2.png

    这个是最简单的内容,里面记录的信息,依次是:

    1. 请求的网址

    2. 请求的方式 GET 【另外还有POST、DELETE、PUT等等】

    3. 当前的响应状态码 200

    4. 远程服务器的地址:120.27.51.6 以及端口 80

    5. 来源信息策略:降级时不推荐【从https协议降为http协议时不发送referrer给跳转网站的服务器】

    辅二:Response Headers

    3.png

    上图就是响应头的内容,比较的少,介绍如下:

    1. 连接:保持连接

    2. 内容长度:16115

    3. 内容类型:html文本内容,编码是utf-8

    4. 日期:2019年8月17日 11:02,周四

    5. 服务器:nginx 1.13.12版本

    6. X-Frame-Options:SAMEORIGIN,参考下方表格

    选项 介绍
    DENY 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
    SAMEORIGIN 表示该页面可以在相同域名页面的 frame 中展示。
    ALLOW-FROM uri 表示该页面可以在指定来源的 frame 中展示。

    辅三:请求包长什么样子

    4.png

    这是HTTP请求的格式,通常GET请求是不含请求主体的

    以上就是本篇文章的全部介绍内容了


    !放在最后

    如果文章中有什么错误或者建议修改的地方,欢迎留言纠正和回复

    如果你喜欢本篇文章,不妨关注一下我们的公众号,每周更新两篇原创技术文档,都是干货

    wxgzh1.png

    相关文章

      网友评论

        本文标题:【编号0002】请求头都含有哪些内容字段,怎么理解?

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