参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP
1、Accept和Content-Type
(1)Accept
Accept字段用于在请求中向服务器告知浏览器期待接受的mime响应类型。
对于没有文件后缀名的接口请求来说,浏览器默认是设置为*。而对于有文件后缀名,浏览器会根据后缀名自动设置。在ajax中,也可以自行设置该请求头部。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
- 设置多个允许的接收类型,以逗号,间隔,还可以为每个类型在其后使用分号;定义q属性,表示优先程度
(2)请求Content-Type
用于向服务器告知请求体部中的mime类型。
- get请求没有体部数据时,默认无该字段
- form表单可以基于enctype属性设置,会影响该字段
- ajax可以在请求时直接设置该字段值
//get请求,没有体部数据时,没有content-type字段
//ajax设置之一
Content-Type: application/json; charset=UTF-8
//form表单
Content-Type: application/x-www-form-urlencoded
Content-Type:
multipart/form-data; boundary=----WebKitFormBoundaryjtIySeZn1jkJKe97
Content-Type: text/plain
(3)响应Content-Type
用于向浏览器告知响应体部中的mime类型。
Content-Type: text/html; charset=utf-8
Content-Type: image/png
content-type: image/gif
content-type: text/css
content-type: text/javascript; charset=utf-8
2、Content-Length
用于向服务端或者浏览器告知体部的长度。用十进制数字表示的八位字节的数目。
只有当浏览器使用持久HTTP连接时才需要这个数据。
3、Accept-Charset
用于向服务端表示浏览器接受的字符集。如果服务端不支持,可能返回406,但是为了友好更常见的是忽略。
Accept-Charset: utf-8, iso-8859-1;q=0.5
4、Accept-Encoding和Content-Encoding
用于向服务器告知浏览器端接受的压缩方式
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *
// Multiple algorithms, weighted with the quality value syntax:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
(2)Content-Encoding
用于告知浏览器响应内容实际采用的压缩方式,如果没有压缩则没有该字段。
Content-Encoding: br
具体是否选择进行压缩:
- 双方是否支持同一方案
- 要发送的数据已经经过压缩,再次进行压缩不会导致被传输的数据量更小。一些图像格式的文件会存在这种情况;
- 服务器超载,无法承受压缩需求导致的计算开销。通常,如果服务器使用超过 80% 的计算能力,微软建议不要压缩。
5、Accept-Language和Content-Language
(1)Accept-Language
向服务器告知浏览器可以理解的自然语言
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
(2)Content-Language
向浏览器告知实际使用的自然语言。如果服务端不支持,可能返回406,但是为了友好更常见的是忽略,直接返回内容。