码迷,mamicode.com
首页 > Web开发 > 详细

Http头部和状态码

时间:2016-08-24 17:35:49      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:http状态码


URL

由三部分组成:资源类型、存放资源的主机域名、资源文件名

一般语法格式为:protocol://hostname[:port]/path


HTTP头域包括:通用头、请求头、响应头和实体头四部分,

每个头域由一个域名(大小写无关)、冒号和域值(前面可以添加任何数量的空格符)三部分组成。

头域可被扩展为多行,在每行开始处,使用至少一个空格或制表符


通用头域

HTTP通用头域包含请求和响应消息都支持的头域

通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。

Date: 表示消息发送的时间

Pragma: 包含实现的特定指令,最常用的是Pragma: no-cache,表示禁止缓存

Cache-Control: 控制缓存的行为

请求头域

If-Match: 比较ETag是否一致

If-None-Match: 比较ETag是否不一致

If-Modified-Since: 比较资源最后更新的时间是否一致

If-Unmodified-Since: 比较资源最后更新的时间是否不一致

响应头域

ETag: 资源的匹配信息


实体头域包含关于实体的原信息,实体头包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header

体头

Expires: 实体主体过期的时间

Last-Modefied: 资源最后一次修改的时间

Content-Type: Content-Type表明信息类型,缺省值为" text/plain"

它包含了主要类型(primary type)和次要类型(subtype)两个部分,两者之间用"/"分割。主要类型有9种,分别是application、audio、example、image、message、model、multipart、text、video。每一种主要类型下面又有许多种次要类型,常见的有:

  • text/plain:纯文本,文件扩展名.txt

  • text/html:HTML文本,文件扩展名.htm和.html

  • image/jpeg:jpeg格式的图片,文件扩展名.jpg

  • image/gif:GIF格式的图片,文件扩展名.gif

  • audio/x-wave:WAVE格式的音频,文件扩展名.wav

  • audio/mpeg:MP3格式的音频,文件扩展名.mp3

  • video/mpeg:MPEG格式的视频,文件扩展名.mpg

  • application/zip:PK-ZIP格式的压缩文件,文件扩展名.zip

Content-Length: 

Content-Encoding: 由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法。(Content-Encoding: gzip compress deflate)

客户端在请求时,用Accept-Encoding字段说明自己可以接受哪些压缩方法。

(Accept-Encoding: gzip,deflate)



发展

HTTP/0.9:GET       服务器只能回应HTML格式的字符串,不能回应别的格式

HTTP/1.0:GET POST HEAD 任何格式都可以发送,不仅可以传输文字,还能传输图像、视频、二进制文件

HTTP/1.1:GET POST PUT DELETE PATCH HEAD OPTIONS TRACE(8种)(只有加粗三个方法会包含请求体)

    持久连接

    管道机制:以前是浏览器先发出A请求后等待服务器做出回应,收到后在发出B请求,管道则

            允许浏览器同时发出A请求和B请求,服务器按照顺序先回A请求再回B请求

    分块传输编码:是HTTP中的一种数据传输机制,允许HTTP由应用服务器发送给客户端应用

            ( 通常是网页浏览器)的数据可以分成多个部分。

            使用分块传输编码,数据分解成一系列数据块,并以一个或多个块发送,

            这样服务器可以发送数据而不需要预先知道发送内容的总大小。通常数据

            块的大小是一致的,但也不总是这种情况。

            一般情况HTTP的Header包含Content-Length域来指明报文体的长度。

             有时候服务生成HTTP回应是无法确定消息大小的,比如大文件的下载,或

            者后台需要复杂的逻辑才能全部处理页面的请求,这时用需要实时生成消

            息长度,服务器一般使用chunked编码。在进行Chunked编码传输时,在回

            复消息的Headers有transfer-coding域值为chunked,表示将用chunked编

            码传输内容


                                                   HTTP分块传输编码允许服务器为动态生成的内容维持HTTP持久连接。

                                                    分块传输编码允许服务器在最后发送消息头字段。

                                                    HTTP服务器有时使用压缩 (gzip或deflate)以缩短传输花费的时间。

HTTP/2

    HTTP/1.1 版的头信息肯定是文本(ASCII编码),数据体可以是文本,也可以是二进

    制。HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,

    并且统称为"帧"(frame):头信息帧和数据帧。


响应消息和状态码

目前HTTP状态码主要分为如下几类:

1xx:信息响应类,表示接收到请求并且继续处理

2xx:处理成功响应类,表示动作被成功接收、理解和接受

3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

5xx:服务端错误,服务器不能正确执行一个正确的请求

技术分享

1XX:

100:客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。

101:

102:

2XX:

200:请求已成功,请求所希望的响应头或数据将随此响应返回

201:请求已经被实现,而且有一个新的资源已经依据请求的需要而简历,且其URL已经随Location头信息返回。

            假如需要的资源无法及时建立的话,应当返回‘202 Accepted’

202:服务器已接受请求,但尚未处理,最终该请求可能会也可能不会被执行(在异步操作的场合下发送此状态码)

            返回202状态码的目的是允许服务器接受其他过程的请求

203:服务器成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合

204:服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息

205:服务器成功处理了请求,且没有返回任何实体内容

206:服务器成功处理了部分GET请求

3XX:

300:被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。

            用户或浏览器能够自行选择一个首选的地址进行重定向

            Content-Type定义的格式决定这个实体的格式,浏览器也可根据Location值(指明URL)作为自动重定向的地址

301:被请求的资源已经永久移动到新的位置,并且将来任何对此资源的引用都应该使用本响应返回的若干URL之一

302:请求的资源现在临时从不同的URL响应请求,由于这样的重定向是临时的,客户端应继续向原有地址发送以后

            的请求

303:对应当前请求的响应可以在另一个URL上被找到,而且客户端应当采用GET方式访问那个资源

304:如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来)并没有改变

            该响应禁止包含消息体

305:被请求的资源必须通过制定的代理才能被访问

307:

308:

4XX:

400:语义有误,当前请求无法被服务器理解;请求参数有误

401:当前请求需要用户验证

402:预留

403:服务器已理解请求,但是拒绝执行它

404:请求失败,请求所希望得到的资源未在服务器上被发现

405:请求行中制定的请求方法不能被用于请求响应的服务器。必须返回Allow头信息表示当前资源能够接受的请求方

            法列表

406:请求的资源内容特性无法满足请求投中的条件,因而无法生成响应实体

407:与401类似,客户端必须在代理服务器上进行身份验证

408:请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送

409:

410:被请求的资源在服务器上已经不可用,而且没有任何已知的转发地址

411:服务器拒绝在没有定义Content-Length头的情况下接受请求

412:服务器在验证请求的头字段中给出先决条件时,没能满足其中的一个或多个

413:服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围

414:请求的URL长度超过了服务器能够解释的长度

415:对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式

416:

417:

421:从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围

422:请求格式正确,但含有语义错误

424:

425:

426:

449:

5XX:

500:服务器遇到了一个未曾预料的状况,无法完成请求

501:

502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接受到无效的响应

503:由于临时的服务器维护或者过载,无法处理请求

504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器收到响应

505:服务器不支持或拒绝支持在请求中使用的HTTP版本

506:

507:服务器无法存储完成请求所必须的内容

509:服务器达到带宽限制

510:


                        《内容来自开发者头条》


本文出自 “零蛋蛋” 博客,谢绝转载!

Http头部和状态码

标签:http状态码

原文地址:http://lingdandan.blog.51cto.com/10697032/1842060

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!