万维网HTTP
HTTP协议
HTTP协议定义了客户端和服务器之间交互的消息内容和步骤(很简单,就是客户端请求,然后服务器回复)
请求
| 对什么(/quartz/index.html) | 什么操作(称为为方法) | 方法描述 | 请求的响应 |
|---|---|---|---|
| 对的是URI | GET | 我想访问你的某个资源 | 返回资源 |
| POST | 我想把这条信息告诉你 | 可能是返回处理过的结果 | |
| PUT | 我想把这个文件传输给你 | 返回状态码,比如已经存在于服务器上 | |
| HEAD | 把那个相关信息告诉我 | 返回有效期,更新日期等等 | |
| DELETE | 快把那个文件删掉吧~ | 返回状态码 | |
| OPTIONS | 你支持那些方法? | GET,HEAD… | |
| CONNECT | 向服务商的隧道传输发送请求 | …OK,然后进入网络隧道 |
URI
在了解URI之前先看看URL,他是URI的子集
URL是URI的子集,强调资源的位置和访问方式
URL常见的种类:
http: / https: 访问Web资源, ftp: 下载和上传文件, mailto: 电子邮件地址 ,news: 新闻组文章
URL示例:
https://evil0knight.github.io/quartz/
- 服务器名称是
evil0knight.github.io - 文件路径是
/quartz/ - 这通常省略了默认文件,完整路径可理解为
/quartz/index.html
URI示例:sftp://admin:P@ssw0rd123@dev-server.research.internal:8080/v2/projects/quartz/config.yaml?format=json&mode=readonly#section-security
| 组成部分 | 示例值 | 是否可选 | 作用 |
|---|---|---|---|
| 协议方案 | sftp | 一般必选 | 说明用什么协议访问资源 |
| 登录信息 | admin:P@ssw0rd123 | 可选 | 提供身份认证信息 |
| 服务器地址 | dev-server.research.internal | 一般必选 | 说明资源在哪台主机上 |
| 服务器端口号 | 8080 | 可选 | 说明访问主机的哪个端口 |
| 带层次文件路径 | /v2/projects/quartz/config.yaml | 可选 | 说明主机上的具体资源位置 |
| 查询字符串 | format=json&mode=readonly | 可选 | 给服务器传附加参数 |
| 片段标识符 | section-security | 可选 | 定位资源内部的某一部分 |
持久连接与管线化
因为传输页面的时候,不仅有文本还有其他的资源,比如图片,那么每次传输都会多次断开,造成资源浪费
所以http1.1和部分的http1.0是持久连接的,除非一方断开
另外,在持久连接的基础上,增加了管线化,是请求端不用等待回复可以继续请求
Cookie状态管理🍪
HTTP是无状态的,无法根据之前的状态进行本次的请求处理,这很不方便
Cookie技术通过在请求和相应报文中写入Cookie信息来控制客户端的状态
首部报文会携带Cookie的sid=123456781374618(随便输的,意思就是有个sid方便服务器记录)
如果你正在跟随梳理, 返回 MOC←