一、HTTP协议基础以及发展历史
1.五层网络模型介绍:
- 物理层:定义物理设备如何传输数据
- 数据链路层:在通信的实体间建立数据链路连接
- 网络层:为数据在结点之间传输创建逻辑链路
- 传输层:向用户提供可靠的端到端的服务,向高层屏蔽了下层数据通信的细节
- 应用层:构建于TCP协议至上,屏蔽网络传输相关细节,为应用软件提供了很多服务
-
2.http协议的发展历史:
- a.HTTP/0.9: 就只有一个GET命令,没有header等描述数据的信息,服务器发送完毕,就关闭TCP连接。
-
b.HTTP/1.0: 新增很多命令(POST、HEADER、PUT),新增了status code和header,多字符集支持、多部分发送、权限、缓存等,一个HTTP请求就要创建一个连接。
-
c.HTTP/1.1: 支持了持久连接,新增pipeline、host和其他一些命令,串行执行。
-
d.HTTP/2: 所有数据以二进制传输,同一个连接里面发送多个请求不在需要按照顺序来,头信息压缩已经推送等提高效率的功能。
3.http的三次握手
-
4.URI、URL和URN
-
URI(Uniform Resource Identifier)/统一资源标志符:用来唯一标识互联网上的信息资源,包括URL和URN.
eg: http://www.baidu.com
-
URL(uniform Resource Locator)/统一资源定位器:
-
URN/永久统一资源定位符:在资源移动之后还能被找到,目前还没有非常成熟的使用方案
5.HTTP报文格式:
二、HTTP特性总览
-
1.cors跨域
-
a.服务器设置允许跨域
Access-Control-Allow-Origin: 表示允许访问的外域请求
Access-Control-Allow-Headers:首部字段用于预检请求的响应。其指明了实际请求中允许携带的首部字段
Access-Control-Allow-Methods:首部字段用于预检请求的响应。其指明了实际请求所允许使用的 HTTP 方法
Access-Control-Max-Age:用来指定本次预检请求的有效期,单位为秒
Access-Control-Allow-Credentials:值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。
设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器 -
b.jsonp
2.Cache-Control
Cache-Control:”max-age=20” : 客户端最大缓存20秒
Last-Modified:”123”和Etag:”777”: 数据验证
3.长连接
Cache-Control:”max-age=20” : 客户端最大缓存20秒
Last-Modified:”123”和Etag:”777”: 数据验证
4.数据协商
request:
Accept:可接受的格式
Accept-Encoding:可接受的压缩格式
Accept-Language:可接受的语言
User-Agent:response:
Content-Type:返回的格式
X-Content-Type-Options:nosniff:不会主动预测返回类型
Content-Encoding:返回数据压缩格式