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:

《内容来自开发者头条》

时间: 2024-12-11 14:35:20

Http头部和状态码的相关文章

常见HTTP状态码

一些常见HTTP状态码为:200 – 服务器成功返回网页404 – 请求的网页不存在503 – 服务不可用 常见HTTP状态码大全 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明http状态码 100 (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分.http状态码 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换. 2xx (成功)表示成功处理了请求的状态代码.代码 说明http状态码 200

HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结

HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET /data/info.html HTTP/1.1 方法字段就是HTTP使用的请求方法,比如常见的GET/POST 其中HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别: HTTP1.0对于每个连接都的建立一次连接一次只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Ho

Http报文 状态码

一.HTTP报文 1.HTTP报文介绍 HTTP报文:用于HTTP协议交互的信息. HTTP报文由报文头部和报文主体(非必须)构成,中间由空行来分隔. 1.1 请求报文:客户端发起的报文. 1).报文头部: (1)请求行:包含请求的方法,URI和HTTP版本号. (2)请求头部字段. (3)通用头部字段 (4)实体头部字段 2).空行 3).报文主体 1.2.响应报文:服务单响应的报文. 1).报文头部: (1)状态行:包含表示请求响应的状态码,原因短语,和HTTP版本. (2)响应头部字段.

HTTP状态码大全(转自wiki)

1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应. 这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动. 100 Continue客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响

TCP/IP协议族(一) HTTP简介、请求方法与响应状态码

接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单的聊一下TCP/IP协议族,然后聊一下HTTP协议,然后再聊一下SSL上的HTTP(也就是HTTPS)了.当然TCP/IP协议族是个老生常谈的话题,网络上关于该内容的文章一抓一大把呢,但是鉴于其重要性,还是有必要系统的总结一下的. 一.TCP/IP协议组简述 在聊HTTP与HTTPS之前呢,我们先简

HTTP状态码(响应码)

HTTP状态码(响应码)用来表明HTTP请求是否已经成功完成.HTTP响应类型一共分五大类:消息响应,成功响应,重定向,客户端错误,服务器端错误. 下表列出了所有HTTP状态码,以及他们各自所代表的含义: 状态码 原因短语 代表含义 HTTP 版本 消息响应 100 Continue(继续) 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在请求完成后向客户端发送一个最

HTTP状态码对照表 HTTP response codes

HTTP状态码对照表 HTTP response codes 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求. HTTP状态码的英文为HTTP Status Code.        下面是常见的HTTP状态码: 200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - 请求的资源(网页等)不存在 500 - 内部服务器错

HTTP状态码之302、303和307

今日读书,无法理解HTTP302.303.307状态码的来龙去脉,决定对其做深究并总结于本文. <HTTP权威指南>第3章在讲解30X状态码时,完全没有讲清楚为什么要有302.303.307的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙:而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307.很是迷惑,对于这3个状态码,WiKi和RFC文档都有详解,下面我以我的思维添油加醋的描述一遍. 一.状态码——302 RFC1945(http://to

Http协议状态码总结

一.http方法 方法名 说明 get 发送一个获取请求,服务器的响应会包含head与body部分 post 发送一个输入数据的请求,服务器的响应会包含head与body部分 head 服务器响应的只有head部分 put 向服务器发送一个文件(资源) trace 目的服务器在响应请求的时候,会在主体中带上原始的请求报文,用于客户端对比防火墙.代理.网关等对数据做的改变 options 请求服务器告知web服务器支持的功能 delete 请求服务器删除url指定的资源 二.http常用状态码 1