【计算机网络】深入解析 HTTP 请求中的 header 类型:Host、Content-Length、Content-Type、User-Agent、Referer
1.Host2.Content-Length3. Content-Type4.User-Agent (简称UA)5. Referer



网络原理— 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的:



更多推荐


所有评论(0)