在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


网络原理— HTTP 请求“报头”(header)


header 的结构

header 的整体的格式是 "键值对" 结构,键 / 值都是通过RFC标准文档规定的;

每个键值对占一行,键和值之间使用 : 分割:

在这里插入图片描述

报头的种类有很多,此处仅介绍几个常见的.


1. Host


表示服务器主机地址端口

在这里插入图片描述

绝大部分情况下,IP端口号 这两个属性是一致的,但是在特殊情况下不一致,所以 Host : IP:端口号这样的报头结构,依旧有存在的意义;

这种特殊情况例如:

  • 使用了“代理”(通过特殊的程序,在请求和响应之间,做了中间转换

  • 中间转换的过程,会修改发给服务器的的请求的 URL

  • 但是 Host 是保持不变的,因此可以使用 Host 获取最原始的目标


拓展:传输过程会对 header 和 body 进行加密

  • 在 HTTP 协议中,传输的时候可能会涉及到“加密”(HTTPS);

  • URL 部分是不会被加密的,加密的是 header 和 body ;

  • 服务器 收到请求之后,也可以做一个最终的校验,验证 URL 中的内容和 header加密的内容是否一致,可以一定程度提高传输过程中的安全性;

在这里插入图片描述


2. Content-Length


表示body中的数据长度,单位是字节,不是字符

在这里插入图片描述

所以,在一个连接中的多个请求中Content-Length 可以搭配空行,区分每一个完整的 HTTP 请求;


在这里插入图片描述


3. Content-Type


表示请求body中的数据格式

在这里插入图片描述


我们使用强制刷新 操作,让浏览器忽视硬盘缓存,重新加载包含静态资源的数据,以便能在抓包的响应结果中,找到关于Content-Type的内容:

在这里插入图片描述


常见选项

application/x-www-form-urlencoded:form

  • 表单提交的数据格式;
  • 此时 body 的格式形如:
 title=test & content=hello

multipart/form-data:

  • form表单提交的数据格式

  • 在form标签中加上enctyped="multipart/form-data"

  • 通常用于提交图片/文件,body格式形如:

在这里插入图片描述


application/json

  • 数据为json格式,body格式形如:

在这里插入图片描述


关于Content-Type的详细情况:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types


4. User-Agent (简称UA)


表示 浏览器 / 操作系统属性,形如:

在这里插入图片描述


在这里插入图片描述

User-Agent 之所以是这个样子是因为历史遗留问题,可以参考

User-Agent的故事:https://zhuanlan.zhihu.com/p/398807396


User-Agent 用途

在这里插入图片描述

  • 但是,根据 UA 中的操作系统信息,来直接区分用户设备的做法,已经不适合现代对于现代;

  • 因为还有 android / ios 系统的平板,展示的页面中,元素的属性就不能和 android / ios 系统的手机完全相同;

  • 因此,在前端圈子中出现“响应式编程”,原理是通过 CSS 中的“媒体查询”功能,来感知窗口的尺寸(宽度)

  • 通过不同的尺寸,设置合适的样式,使一个页面,适配不同的窗口


5. Referer


我们打开一个页面:

在这里插入图片描述

查看该页面的请求:
在这里插入图片描述


通过第一个页面搜索下一个页面:

在这里插入图片描述


查看搜索到的页面的抓包结果中的HTTP请求内容:

在这里插入图片描述


通过上述的例子,我们知道,Referer 表示这个页面是从哪个页面跳转过来的


如果直接在浏览器中输入URL,或者直接通过收藏夹访问页面时是没有Referer的:

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐