共计 1019 个字符,预计需要花费 3 分钟才能阅读完成。
HTTP 协议
Hypertext Transfer Protocol,即超文本传输协议。
请求
方法
不会修改服务器数据的方法,可认为是安全(Safe)的。
同样的请求被执行一次与连续执行多次的效果是一样的,服务器状态也是一样的,所有 Safe 的方法都是幂等(Idempotent)的。
状态码
1xx:指示信息,表示请求已接收,继续处理。
2xx:成功,表示请求已被成功接收、理解、接受。
3xx:重定向,要完成请求必须进行更进一步的操作。
4xx:客户端错误,请求有语法错误或请求无法实现。
5xx:服务器端错误,服务器未能实现合法的请求。
常用请求头
Accept:接收类型,表示浏览器支持的 MIME 类型(对标服务端返回的 Content-Type)
Content-Type:客户端发送出去实体内容的类型
Cache-Control:指定请求和响应遵循的缓存机制,如 no-cache
If-Modified-Since:对应服务端的 Last-Modified,用来匹配看文件是否变动,只能精确到 1s 之内
Expires:缓存控制,在这个时间内不会请求,直接使用缓存,服务端时间
Max-age:代表资源在本地缓存多少秒,有效时间内不会请求,而是使用缓存
If-None-Match:对应服务端的 ETag,用来匹配文件内容是否改变(非常精确)
Cookie:有 cookie 并且同域访问时会自动带上
Referer:该页面的来源 URL(适用于所有类型的请求,会精确到详细页面地址,csrf 拦截常用到这个字段)
Origin:最初的请求是从哪里发起的(只会精确到端口),Origin 比 Referer 更尊重隐私
User-Agent:用户客户端的一些必要信息,如 UA 头部等
响应
常用响应头
Content-Type:服务端返回的实体内容的类型
Cache-Control:指定请求和响应遵循的缓存机制,如 no-cache
Last-Modified:请求资源最后修改时间
Expires:应该在什么时候认为文档已经过期,从而不再缓存它
Max-age:客户端的本地资源应该缓存多少秒,开启了 Cache-Control 后有效
ETag:资源特定版本的标识符,Etags 类似于指纹
Set-Cookie:设置和页面关联的 cookie,服务器通过这个头部把 cookie 传给客户端
Server:服务器的一些相关信息
Access-Control-Allow-Origin:服务器端允许的请求 Origin 头部(譬如为 *)