昨天看到请求头部分,整理一些通用请求头,下面整理下常用的响应/请求头
常用的请求头部
1 | Accept:接受类型,标示浏览器支持的MIME类型(对标服务器返回的Centent-Type) |
备注
no-cache:可以在本地缓存,可以代理服务器缓存,但是和这个缓存需要服务器验证以后才可以使用
no-store:禁用缓存,本地和代理服务器均不准使用,必须从服务器获取
Accept 和 Content-Type 的区别
1 | Accpet属于请求头,Content-Type属于实体头 |
常用的响应头
1 | Access-Control-Allow-Hedaers:服务器端允许的Headers |
请求头部和响应头部是彼此匹配分析的。
最常见的:
请求头部的 Accept 要和响应头部的 Content-Type 进行匹配,否则会报错。
其实我在整理之前一直在想为什么请求头部也有「Content-Type」,那为什么不是它和响应头部的「Content-Type」匹配?
后来,我整理的时候发现,「Content-Type」是实体头部,指的是:「发送端(可以使客户端,也可以是服务端),用来表明发送信息的文档类型的」,也就是说他是发送性质的,「Accept」是接受性质,so 请求头部的「Accept」和响应头部的「Cotent-Type」匹配的。
举栗子
造成跨域问题,往往是因为请求头部「Origin」要匹配响应头部的「Access-Control-Allow-Origin」,一旦匹配失败,则会报跨域错误。
在使用缓存时,请求头部的 If-Modified-Since、If-None-Match 分别和响应头部的 Last-Modified、ETag 对应
什么是实体头?
可以理解为「实体信息」的头部
什么是实体信息?
消息实体分为响应实体、请求实体
在 http 请求中,会将一些需要的参数放入,你比如 POST 请求。
实体信息中可以放入参数(data=ab&query=123),也可以直接通过表单对象(Form Data 对象,上传时可以带参数、文件、二进制流)
而 http 响应时候,服务端就会返回实体信息(没错,就是 reponse)
一般的接口请求,实体信息就是 JSON 格式的数据,然而接口返回的可以使 JSON 格式的数据也可以使 html,然后通过 JS 渲染
最后讲一下,CRLF
Carriage-Return Line-Feed), 回车换行符
(我也不明白这东西有什么用)
请求头和实体消息之间有一个 CRLF 分隔,响应头部和响应实体之间用一个 CRLF 分隔
一般来说(分隔符类别):
1 | CRLF->Windows-style |
结束下面附上一个 http 请求栗子
http 请求报文结构栗子:
再说点什么?
今天的内容其实我已经整理的差不多,两天把大牛的 http 请求,简单的整理(抄)了一遍,收获很多,之前一直不懂跨域的原理,以及 request/response 的头部匹配,基本也理解了。从 HTTP 报文结构表面来看至少看出来跨域的问题来自哪里,具体如何解决还需要仔细研究
2019 年 02 月 15 日 20:40:48
袁凯忻