02.HTTP基本原理
-
- [1.URI 和 URL 的区别](#1.URI 和 URL 的区别)
- [2.HTTP 和 HTTPS 的区别](#2.HTTP 和 HTTPS 的区别)
- 3.请求过程
1.URI 和 URL 的区别
-
URL(Uniform Resource Locator)即-统一资源定位符
URL是用来定位和访问互联网上资源的独特标识,它包括了资源的位置(如IP地址或域名)、端口号(可选)、路径(资源在服务器上的位置)、查询(用于传递参数)和片段(用于指定资源中的特定部分)。例如 http://www.example.com/index.html 是一个指向网站首页的URL。
-
URI(Uniform Resource Identifier)即-统一资源标志符
URI是一个更广泛的术语,它用来唯一地标识一个资源,而不涉及如何定位该资源。URI可以分为URL和URN两种。URL是URI的一种形式,它提供了定位资源的方法,而URN则是用特定命名空间的名字来标识资源,不包含位置信息。
-
URN(Uniform Resource Name)即-统一资源名称
URN是URI的一种形式,它通过一个全局唯一的名称来标识资源,这个名称在某个命名空间中是唯一的。URN的目的是提供一种方式,使得即便资源的位置发生变化,依然可以对资源进行标识。例如,urn:isbn:0-395-36341-1 是莎士比亚戏剧《罗密欧与朱丽叶》的ISBN号,这是一个典型的URN示例。
URL :提供了资源的位置和访问方式,是URI的子集,易于人类理解和机器解析。
URI :更通用的资源标识符,可以是URL或URN,用于标识资源,但不提供定位信息。
URN:侧重于通过名称来标识资源,与资源的位置无关,常用于命名空间中标识唯一资源。
关系图:URI = URL+URN
2.HTTP 和 HTTPS 的区别
HTTP(超文本传输协议)英文(Hyper Text Transfer Protocol)
- 安全性:HTTP协议传输的数据是未加密的,可以被第三方拦截和阅读
- 连接状态:HTTP连接在数据传输过程中是明文的,一旦连接被截断,数据就有可能被窃取或篡改
- 端口号:80端口
- 性能:比HTTPS好
- 证书:HTTP不需要使用证书
HTTPS(超文本传输安全协议)英文(Hypertext Transfer Protocol Secure)
- 安全性:HTTPS通过SSL/TLS协议对数据进行加密,确保数据在传输过程中的机密性和完整性,防止数据被截获或篡改
- 连接状态:HTTPS连接在数据传输过程中始终保持加密状态,即便连接在传输过程中被截断,也不会影响数据的加密状态
- 端口号:443端口
- 性能:HTTPS需要进行加密和解密操作,可能会增加服务器和客户端的计算量,导致性能开销
- 证书:HTTPS需要使用SSL/TLS证书来验证服务器的身份,确保用户连接的是合法的服务器,防止中间人攻击
3.请求过程
打开电脑浏览器,访问百度 http://www.baidu.com/,这时候鼠标右键并选择 "检查" 菜单(或直接按快捷键 F12),即可打开浏览器的开发者工具,如下图所示:
其中各列的含义如下:
- Name:请求的名称,一般会将 URL 的最后一部分内容当作名称。
- Status:响应的状态码,这里显示为 200,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
- Protocol:请求的协议类型,这里 http/1.1 代表是 HTTP 1.1 版本,h2 代表 HTTP 2.0 版本。
- Type:请求的文档类型。这里为 document,代表我们这次请求的是一个 HTML 文档,内容就是一些 HTML 代码。
- Initiator:请求源。用来标记请求是由哪个对象或进程发起的。
- Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示 from cache。
- Time:发起请求到获取响应所用的总时间。
- Waterfall:网络请求的可视化瀑布流。
随便点击一个条目,即可看到其更详细的信息,我们看一下比较常用的 如图所示
通用头 (General)
- Request URL: 请求的网址
- Request Method: 请求方法(GET,HEAD,POST,PUT,DELETE,CONNECT,OPTIONS,TRACE)
- Status Code : 请求状态(2xx,3xx,4xx,5xx) 点击参考 HTTP响应状态码一览表
- Remote Address:HTTP请求的远程地址,即HTTP请求的源地址
- Referrer Policy:Referer提供访问来源的信息,告诉服务器,用户在访问当前资源之前的位置,发生传场景包含:加载图片、样式文件、JS文件、请求。浏览器会将当前网址作为Referer字段,放在 HTTP 请求的头信息发送
请求头(Request Headers)
- Content-Length:HTTP消息长度, 用十进制数字表示的八位字节的数目,消息实体的长度,用于消息的分包和粘包处理
- Content-Type : 互联网媒体类型 点击参考
响应头(Response Headers)
- Accept:请求报头域,用于指定客户端可接受哪些类型的信息
- Accept-Encoding:指定客户端可接受的内容编码
- Accept-Language:指定客户端可接受的语言类型
- Connection:是否开启长链接。close为不长连接,keep-alive保持长连接
- Cookie:维持当前访问会话
- Host:用于指定请求资源的主机 IP 和端口号,其内容为请求 URL 的原始服务器或网关的位置。从 HTTP 1.1 版本开始,请求必须包含此内容
- Referer:是HTTP请求header的报文头,用于指明当前流量的来源参考页面。通过这个信息,我们可以知道访客是怎么来到当前页面的
- Sec-Ch-Ua:可以理解用来替代user-agent的,用sec-ch-ua可以防止泄露浏览器详细信息
- Sec-Ch-Ua-Mobile:是否是移动端用户
- Sec-Ch-Ua-Platform:表示操作系统名称
- Sec-Fetch-Dest:表示请求的目的地,即如何使用获取的数据
- Sec-Fetch-Mode:该请求头表明了一个请求的模式
- Sec-Fetch-Site:请求发起者的来源与目标资源来源之间的关系
- User-Agent:简称 UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别为爬虫