带你一步步解析 HTTP( 八 )


也就是说,MIME 类型其实就是一系列消息内容类型的集合 。那么 MIME 类型都有哪些呢?
文本文件: text/html、text/plain、text/css、application/xhtml+xml、application/xml
图片文件: image/jpeg、image/gif、image/png
视频文件: video/mpeg、video/quicktime
应用程序二进制文件: application/octet-stream、application/zip
比如,如果浏览器不支持 PNG 图片的显示,那 Accept 就不指定image/png,而指定可处理的 image/gif 和 image/jpeg 等图片类型 。
一般 MIME 类型也会和 q 这个属性一起使用,q 是什么?q 表示的是权重,来看一个例子
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8这是什么意思呢?若想要给显示的媒体类型增加优先级,则使用 q= 来额外表示权重值,没有显示权重的时候默认值是1.0,我给你列个表格你就明白了
qMIME1.0text/html1.0application/xhtml+xml0.9application/xml0.8* / *
也就是说,这是一个放置顺序,权重高的在前,低的在后,application/xml;q=0.9 是不可分割的整体 。
Accept-Charset
accept-charset 属性规定服务器处理表单数据所接受的字符集 。
accept-charset 属性允许您指定一系列字符集,服务器必须支持这些字符集,从而得以正确解释表单中的数据 。
该属性的值是用引号包含字符集名称列表 。如果可接受字符集与用户所使用的字符即不相匹配的话,浏览器可以选择忽略表单或是将该表单区别对待 。
此属性的默认值是 unknown,表示表单的字符集与包含表单的文档的字符集相同 。
常用的字符集有: UTF-8 - Unicode 字符编码 ; ISO-8859-1 - 拉丁字母表的字符编码
Accept-Language
首部字段 Accept-Language 用来告知服务器用户代理能够处理的自然语言集(指中文或英文等),以及自然语言集的相对优先级 。可一次指定多种自然语言集 。和 Accept 首部字段一样,按权重值 q来表示相对优先级 。
Accept-Language: en-US,en;q=0.5请求标头我们大概就介绍这几种,后面会有一篇文章详细深挖所有的响应头的,下面是一个响应头的汇总,基于 HTTP 1.1

带你一步步解析 HTTP

文章插图
 
响应标头响应标头是可以在 HTTP 响应种使用的 HTTP 标头,这听起来是像一句废话,不过确实是这样解释 。并不是所有出现在响应中的标头都是响应标头 。还有一些特殊的我们上面说过,有通用标头和实体标头也会出现在响应标头中,比如 Content-Length 就是一个实体标头,但是,在这种情况下,这些实体请求通常称为响应头 。下面以一个例子为例和你探讨一下响应头
200 OKAccess-Control-Allow-Origin: *Connection: Keep-AliveContent-Encoding: gzipContent-Type: text/html; charset=utf-8Date: Mon, 18 Jul 2016 16:06:00 GMTEtag: "c561c68d0ba92bbeb8b0f612a9199f722e3a621a"Keep-Alive: timeout=5, max=997Last-Modified: Mon, 18 Jul 2016 02:36:04 GMTServer: ApacheSet-Cookie: mykey=myvalue; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; secureTransfer-Encoding: chunkedVary: Cookie, Accept-Encodingx-frame-options: DENY响应状态码
首先出现的应该就是 200 OK,这是 HTTP 响应标头的状态码,它表示着响应成功完成 。HTTP 响应标头的状态码有很多,并做了如下规定
以 2xx 为开头的都表示请求成功响应 。
状态码含义200成功响应204请求处理成功,但是没有资源可以返回206对资源某一部分进行响应,由Content-Range 指定范围的实体内容 。
以 3xx 为开头的都表示需要进行附加操作以完成请求
状态码含义301永久性重定向,该状态码表示请求的资源已经重新分配 URI,以后应该使用资源现有的 URI302临时性重定向 。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问 。303该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源 。304该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况 。307临时重定向 。该状态码与 302 Found 有着相同的含义 。
以 4xx 的响应结果表明客户端是发生错误的原因所在 。
状态码含义400该状态码表示请求报文中存在语法错误 。当错误发生时,需修改请求的内容后再次发送请求 。401该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息 。403该状态码表明对请求资源的访问被服务器拒绝了 。404该状态码表明服务器上无法找到请求的资源 。


推荐阅读