[ 初识HTTP| 青训营笔记]

50 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

一、什么是HTTP 

超文本传输协议,应用层协议、基于TCP。请求/响应。简单可扩展、无状态。 

 二、发展 

1、0.9单行协议 请求GET 响应HTML文档

2、1.0构建可扩展性 增加了header、状态码、支持多文档类型

3、1.1标准化协议 连接复用、缓存、内容协商 

4、2更优异的表现 二进制协议、头部压缩、服务端推送... 更快、更稳定、更简单 帧:HTTP2通信的最小单位,每个帧包含帧头 消息:与逻辑请求或响应信息对应的完整的一系列帧 数据流:已建立的连接内双向字节流,可以承载一条或多条信息 交错发送,接收方重组织 连接永久,且仅需要每个来源一个连接。 流控制:阻止服务器向浏览器发送大量数据的机制 服务器主动推送一些信息给客户端 

5、3草案 

 三、请求方法

1、安全:不会修改服务器的数据的方法 GET\HEAD\OPTIONS 

2、幂等:同样的请求被执行一次与连续执行多次的效果一致,服务器状态也一致。 所有安全的方法都是幂等的 GET HEAD OPTIONS PUT DELETE 

 四、状态码 

1请求已接收、继续处理 

2 成功 

3 重定向,完成请求必须有进一步操作 

4客户端错误 

5服务端错误 

 *504 Gateway Timeout网关或代理服务器无法在规定的时间内获取想要的响应 

 * RESTful API 一种api设计风格 

(1)每一种URI代表一种资源 

(2)客户端和服务器之间,传递这种资源的某种表现层 

(3)客户端通过HTTP方法,对服务端资源进行操作,实现“表现层状态转化” 

 五、常用请求头 

 1、Accept 接受类型,表示浏览器支持的MIME类型(对标服务器返回的Content-Type)

 2、Content-Type 客户端发出去内容的类型

 3、Cache-Control 指定请求和响应遵循的缓存机制

 4、If-Modeified-Since,对于服务端的Last-Modified,用于匹配查看文件是否变动(只能精确到1s之内) 

5、Expires缓存控制,在这个时间内不会请求,直接使用缓存、服务端时间。 

6、Max-age 代表资源在本地缓存多少秒,有效时间内都不会请求,而是使用缓存 

7、If-None-Match 对应服务端的Etag,用来匹配文件内容是否改变(非常精确) 

8、Cookie有cookie并且同域访问时会自动带上 

9、Referer 该页面的来源url(适用于所有类型的请求,会精确到详细的页面地址,csrf拦截常用到这个字段) 

10、Origin 最初的请求从哪里发起(仅精确到端口,比referer更尊重隐私) 11、User-Agent 用户客户端的一些必要信息,如UA头部等 

 六、常见响应头 

1、Content-Type 服务端返回的实体内容的类型 

2、Cache-Control 指定请求和响应遵循的缓存机制 

3、Last-Modified 资源最后修改的时间

4、Expires 到期时间 

5、Max-age 代表资源在本地缓存多少秒,开启了cach-conctrol后有效 

6、Etag 资源的特定版本标识符 

7、Set-Cookie 设置与页面相关联的cookie,服务器通过这个头部把cookie传给客户端 

8、Server 服务器相关信息 

9、Access-Control-Allow-Origin 服务端允许的请求origin头部 

 七、缓存 

1、强缓存 

本地使用 

(1)Expires 

(2)Cache-Control no-cache:协商缓存验证 

no-store:不用任何缓存 

max-age:存储的最大周期 

2、协商缓存 

与服务器协商 

If-None-Match/Etag 资源的特定版本标识符,一般为字符串

 If-Modeified-Since/Last-Modified 资源最后修改的时间

 优先级:强缓存(Cache-Control > Expires)>协商缓存(If-None-Match/Etag > If-Modeified-Since/Last-Modified )

 八、Cookie Set-Cookie 

1、Name=value 各种cookie的名称和值 

 2、Expires=Date Cookie有效期,缺省时Cookie仅在浏览器关闭之前有效 

 3、Path=Path 限制指定Cookie的发送范围的文件目录,默认为当前 

 4、Domain=domain 限制cookie生效的域名,默认为创建cookie的服务域名 

 5、secure 仅在HTTPS安全连接时,才可以发送Cookie 

 6、HttpOnly js脚本无法获得Cookie 

 7、SameSite=[None|Strict|Lax] 同站策略(防止跨站脚本攻击) 

None:同站、跨站请求都可以发送 

Strict:仅在同站发送

 Lax;允许与顶级导航一起发送,并将与第三方网站发起的get请求一同发送 

 九、HTTPS 经过tsl/ssl加密 

对称加密 

非对称加密