-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
主要内容:
- 协议的状态码、header
- 跨域的问题
- 缓存策略
--
引子
- 为什么在最开始的时候就会做一次跳转呢?那是在出现301永久重定向的时候,浏览器会自动重定向到新的地址,并不会对最初的url发出请求。
- 缓存是HTTP协议中的一个重要议题
- HTTP协议只有请求和响应,它的消息传输建立一个TCP连接上
- 其中登录信息认证的这种方式不太安全,所以不大常用;
- 文件路径这块,现在多用来进行路由
OSI模型参考 - 网络分层
- 七层网络协议 最初的网络分层,计算机科学领域分层较细致,多了会话层和表示层,原来是打算让应用层共享的一些软件代码,但是因为不同的应用程序有大同小异的会话、表示需求,这些代码不完全能够抽象到独立的会话层、表示层,所以可能这些层不够独立。我们一般就使用五层去划分。
- 五层网络协议 工程师一般这么分层,简单明了,每层的作用都比较清晰,我们的HTTP协议属于高层次的应用层协议。
- 六层网络协议?有些人提到将安全层作为一个独立一层,加在应用层之下,比如HTTP协议运行在安全层之上就可以变为https协议。
--
1、HTTP协议的版本
HTTP/1.0
- 增加了status code 和 header
- 增加了方法 post、put、delete、head
- 缺点就是对TCP连接消耗很大
HTTP/1.1
- 持久连接
- pipeline,串行请求
- 新增host请求头,用于指定请求服务器的域名和端口,虚拟主机运行在同一个IP上,可以用host加以区分
HTTP/2.0
- 数据按照二进制传输,不再按照顺序返回
- 头信息压缩 —— 减少带宽
- 添加了推送的概念,让服务端变得主动。—— (服务端可以直接将HTML页面中的静态资源推送到客户端,让资源的加载变得并行)
- 演示网址
| 方法 | 说明 | 版本 |
|---|---|---|
| GET | 获取资源 | 1.0 1.1 |
| POST | 传输实体主体 | |
| PUT | 传输文件 | |
| HEAD | 获得报文首部 | |
| DELETE | 删除文件 | |
| OPTIONS | 询问支持的方法,预请求 | 1.1 |
| TRACE | 追踪路径 | |
| CONNECT | 要求用隧道协议连接代理 | |
| LINK | 建立和资源之间的链接 | |
| UNLINK | 断开链接关系 |
2、HTTP报文
分为 request 请求报文和 response 响应报文

报文头部Header,按照使用范围划分为四个类别
- 通用首部字段 —— 双方都会用到的字段
- request首部字段 —— 补充了请求的附加内容、客户端信息、相应内容相关优先级等信息
- response首部字段 —— 补充了响应的附加内容,也会要求客户端附加额外的内容信息
- Entity首部字段 —— 针对实体部分,补充资源内容更新时间等与实体有关的信息
状态码
| 类别 | 备注 | |
|---|---|---|
| 1xx | Informational | |
| 2xx | Success | |
| 3xx | Redirection | |
| 4xx | Client Error | |
| 5xx | Server Error |
| code | name | 使用场景或处理 |
|---|---|---|
| 101 | Switching Protocols | 升级websocket,配合 Upgrade 头信息 🌰 |
| 200 | ok | 缓存 |
| 206 | partial content | 断点续传,缓存 |
| 301 | Moved Permanently | 永久重定向,缓存 |
| 302 | Moved Temporarily | 临时重定向,配合Location去跳转 |
| 304 | Not Modified | 缓存验证,允许访问资源,配合If-Match、If-Modified-Since、If-None-Match |
| 400 | Bad Request | |
| 401 | Unauthorized | jira |
| 403 | Forbidden | 服务器拒绝请求,但是可以在body中给出拒绝的理由 |
| 404 | Not Found | |
| 500 | Internal Server Error | |
| 503 | Service Unavailable | 服务停机维护,可以配合RetryAfter字段告知解除时间 |
3、跨域cors
同源策略
如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。
允许的方法
- get head post
允许的Content-Type - text/plain
- multipart/form-data
- application/x-www-form-urlencoded
请求头的限制
JsonP 方式,浏览器的标签中的资源是不受同源策略的限制的。
例子
- 演示 Connection keep-alive close
- 演示 101 协议切换
- 演示 cache-control max-age
- 演示 缓存验证
- 演示 跨域 cros jsonp accept-origin
- 演示 302重定向
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels





