admin管理员组

文章数量:1532656

2024年1月25日发(作者:)

实用标准

HTTP 1.1状态代码及其含义

下表显示了常见的HTTP 1.1状态代码以及它们对应的状态信息和含义。

应当谨慎地使用那些只有HTTP 1.1支持的状态代码,因为许多浏览器还只能够支持HTTP

1.0。如果你使用了HTTP 1.1特有的状态代码,最好能够检查一下请求的HTTP版本号。

状态代码

状态信息 含义

100 Continue

初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)

101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)

200 OK

201 Created

202 Accepted

203

Non-Authoritative

Information

一切正常,对GET和POST请求的应答文档跟在后面。

服务器已经创建了文档,Location头给出了它的URL。

已经接受请求,但处理尚未完成。

文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1新)。

没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。

没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。

客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。

客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。

客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。

204 No Content

205 Reset Content

206 Partial Content

300 Multiple Choices

301 Moved Permanently

文档大全

实用标准

类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved

Temporatily”。

出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。

302 Found

注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求host/~user(缺少了后面的斜杠),有的服务器返回301,有的则返回302。

严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。

类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP

1.1新)。

客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。

303 See Other

304 Not Modified

305 Use Proxy

和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1307 Temporary Redirect 新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。(HTTP 1.1新)

400 Bad Request 请求出现语法错误。

客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。

资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。

无法找到指定位置的资源。这也是一个常用的应答。

请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)

指定的资源已经找到,但它的MIME类型和客户在Accpet头中401 Unauthorized

403 Forbidden

404 Not Found

405 Method Not Allowed

406 Not Acceptable

文档大全

实用标准

所指定的不兼容(HTTP 1.1新)。

Proxy

407 Authentication

Required

408 Request Timeout

类似于401,表示客户必须先经过代理服务器的授权。(HTTP

1.1新)

在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)

通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)

所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)

服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)

409 Conflict

410 Gone

411 Length Required

412 Precondition Failed 请求头中指定的一些前提条件失败(HTTP 1.1新)。

目标文档的大小超过服务器当前愿意处理的大小。如果服务器Request Entity Too

413 认为自己能够稍后再处理该请求,则应该提供一个Large

Retry-After头(HTTP 1.1新)。

414 Request URI Too Long URI太长(HTTP 1.1新)。

416

Requested Range Not 服务器不能满足客户在请求中指定的Range头。(HTTP 1.1Satisfiable 新)

Internal Server

Error

服务器遇到了意料不到的情况,不能完成客户的请求。

服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。

服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。

500

501 Not Implemented

502 Bad Gateway

服务器由于维护或者负载过重未能应答。例如,Servlet可能503 Service Unavailable 在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。

504 Gateway Timeout

HTTP Version Not

Supported

由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新)

服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新) 505

文档大全

实用标准

HTTP的早期版本为HTTP/0.9,它适用于各种数据信息的简洁快速协议,但是其远不能满足日益发展各种应用的需要。但HTTP/0.9作为HTTP协议具有典型的无状态性:每个事务都是独立进行处理的,当一个事务开始就在客户与服务器之间建立一个连接,当事务结束时就释放这个连接。HTTP/0.9包含

Simple-Request&Simple-Responsed的报文结构。但是客户无法使用内容协商,所以服务器也无法返回实体的媒体类型。

1982年,Tim Berners-Lee提出了HTTP/1.0,在此后的不断丰富和发展中,HTTP/1.0成为最重要的面向事务的应用层协议。该协议对每一次请求/响应,建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。其缺点是仍会发生下列问题:对用户请求响应慢、网络拥塞严重、安全性等。

1997年形成的HTTP/1.1,也就是现在普遍使用的协议,在持续连接操作机制中实现流水方式,即客户端需要对同一服务器发出多个请求时,其实现在多数的网页都是有多部分组成(比如多张图片),可用流水线方式加快速度,流水机制就是指连续发出多个请求并等到这些请求发送完毕,再等待响应。这样就大大节省了单独请求对响应的等待时间,使我们得到更快速的浏览。

另外,HTTP/1.1服务器端处理请求时按照收到的顺序进行,这就保证了传输的正确性。当然,服务器端在发生连接中断时,会自动的重传请求,保证数据的完整性。

HTTP/1.1还提供了身份认证、状态管理和Cache缓存等机制。这里,我想特别提一下关于HTTP/1.1中的Cache缓存机制对HTTP/1.0的不足之处的改进,它严格全面,既可以减少时间延迟、又节省了带宽。HTTP/1.1采用了内容协商机制,选择最合适的用户的内容表现形式。

现在,很多地方都有用到的虚拟主机技术在HTTP/1.1中也可以实现。所谓的虚拟主机技术,就是同一主机地址实际对应多台主机。通俗的讲,当你同时在一个网站申请两个主页时,用协议分析仪可以发现其实这两个主页对应的是同一个IP地址。这样用多台完全相同的机器形成WWW服务器就可以提高处理的吞吐量。

传统的解决方案是改造域名服务器使其可以根据一定的算法将同一域名解释成不同的IP地址。分别对应虚拟主机的每台机器,其缺点是要求每台机器占用完全独立的IP地址,这与IP地址的缺乏是相矛盾的。

HTTP/1.1提供的解决方案在HTTP协议自身中加入了指定不同主机的功能,从而多台主机可以共享一个IP地址,既提高了性能又便于管理。

因为HTTP/1.1是Internet现行的标准协议,这里详细介绍其相关语法。

首先,HTTP/1.1格式可写为:

[img:8d94cc43ef]/computers/emook/0472/[/img:8d94cc43ef]

其中请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种:

GET: 请求指定的页面信息,并返回实体主体。

HEAD: 只请求页面的首部。

POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

文档大全

实用标准

PUT: 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE: 请求服务器删除指定的页面。

OPTIONS: 允许客户端查看服务器的性能。

TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。

PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。

MOVE: 请求服务器将指定的页面移至另一个网络地址。

COPY: 请求服务器将指定的页面拷贝至另一个网络地址。

LINK: 请求服务器建立链接关系。

UNLINK: 断开链接关系。

WRAPPED: 允许客户端发送经过封装的请求。

Extension-mothed:在不改动协议的前提下,可增加另外的方法。

比如:

GET / HTTP/1.1

Accept: text/plain /*纯ASCII码文本文件*/

Accept: text/html /*HTML文本文件*/

User-Agent:Mozilla/4.5(WinNT)

说明浏览器使用Get方法请求文档/。浏览器则只允许接收纯ASCII码文本文件和HTML文本文件,其使用的引擎是Mozilla/4.5(Netscape)。

当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:

① 客户方错误

100 继续

101 交换协议

② 成功

200 OK

201 已创建

202 接收

203 非认证信息

204 无内容

205 重置内容

206 部分内容

③ 重定向

300 多路选择

301 永久转移

302 暂时转移

303 参见其它

304 未修改(Not Modified)

305 使用代理

④ 客户方错误

400 错误请求(Bad Request)

401 未认证

402 需要付费

403 禁止(Forbidden)

文档大全

实用标准

404 未找到(Not Found)

405 方法不允许

406 不接受

407 需要代理认证

408 请求超时

409 冲突

410 失败

411 需要长度

412 条件失败

413 请求实体太大

414 请求URI太长

415 不支持媒体类型

⑤ 服务器错误

500 服务器内部错误

501 未实现(Not Implemented)

502 网关失败

504 网关超时

505 HTTP版本不支持

比如:(在《TELNET……》一文中用telnet登陆80端口,相同的方法用在HTTP/1.1中,会发现没有显示,下面补充说明之)

telnet 80

HEAD / HTTP/1.1

host: /*本行为输入内容*/

HTTP/1.1 501 Method Not Implemented

Date: Web, 01 Nov 2000 07:12:29 GMT /*当前的日期/时间*/

Server: Apache/1.3.12 (Unix) /*Web服务器信息*/

Allow: GET, HEAD, OPTION, TRACE /*支持的方法类型*/

Connection: close

Connect-Type: Text/html; charset=iso-8859-1/*连接的媒体类型*/

501 Method </p><p style="text-indent: 2em;";>Not Implemented

Method Not Implemented

head to /inde

not supported.

Invalid method in request head / htp/1.1


Apache/1.3.12 Server at Port 80

关于实体头部的内容还可以有:

文档大全

实用标准

Last Modified :请求文档的最近修改时间。

Expires :请求文档的过期时间。

Connect-length:文档数据的长度。

WWW-authenricate:通知客户端需要的认证信息。

Connect-encoding :说明有无使用压缩技术。

Transfer-encoding :说明采用的编码变换类型。

随着Internet的发展,下一代的HTTP协议HTTP-ng已经在酝酿之中,它将会提供更好的安全性、更快的速度,其改进要点为:模块化强、网络效率高、安全性更好、结构更简单。

HTTP协议是我们网络中必不可少的重要协议。那么下面我们就来对这方面的问题进行一下深入讲解。那么我们就针对GET方法实现HTTP协议的具体操作进行一下分析。HTTP协议用于在Internet上发送和接收消息?HTTP协议是一种请求-应答式的协议??客户端发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTTP包?HTTP协议使用可靠的TCP连接,默认端口是80?HTTP的第一个版本是HTTP/0.9,后来发展到了HTTP/1.0,现在最新的版本是HTTP/1.1?HTTP/1.1由RFC 2616 定义?

在HTTP中,Client/Server之间的会话总是由客户端通过建立连接和发送HTTP请求包初始化,服务器不会主动联系客户端或要求与客户端建立连接?浏览器和服务器都可以随时中断连接,例如,在浏览网页时你可以随时点击“停止"按钮中断当前的文件下载过程,关闭与Web服务器的HTTP连接?

1 HTTP请求包

HTTP请求包(GET?POST等请求方法)由三个部分构成,分别是:方法-URI-协议/版本,请求头,请求正文?下面是一个HTTP协议请求包(GET)的例子:

/ HTTP/1.1

-Language: zh-cn

tion: Keep-Alive

: 192.168.0.106

t-Length: 37

me=new_andy&password=new_andy

请求包的第一行是方法-URI-协议/版本:

GET就是请求方法,根据HTTP标准,HTTP协议请求可以使用多种请求方法?HTTP 1.1支持七种请求方文档大全

实用标准

法:GET?POST?HEAD?OPTIONS?PUT?DELETE和TRACE等,常用的为请求方法是GET和POST?

/表示URI?URI指定了要访问的网络资源?HTTP/1.1是协议和协议的版本?

最后一行userName=new_andy&password=new_andy为正文,正文与HTTP头部有一个空行(rn)分隔?这里需要说明的一点,其中Content-Length说明正文的长度,有的正文长度没有在头部说明,只是标明Transfer-Encoding: chunked?关于chunked类型的长度计算方法,见RFC 1626?

请求包的头部还会包含许多有关客户端环境和请求正文的有用信息,这里不再描述?

2 HTTP协议应答包

和HTTP请求包相似,由三个部分构成,分别是:协议-状态代码-描述,应答头,应答正文?下面是一个HTTP应答的例子:

/1.1 200 OK

: Microsoft-IIS/4.0

: Mon, 3 Jan 2005 13:13:33 GMT

t-Type: text/html

-Modified: Mon, 11 Jan 2004 13:23:42 GMT

t-Length: 90

7.

8.

9.解读HTTP包示例

WORLD!

11.

12.

HTTP应答包的第一行类似于HTTP协议请求的第一行,表示所用的协议是文档大全

实用标准

HTTP 1.1,服务器处理请求的状态码200?

应答头也和请求头一样包含许多有用的信息,例如服务器类型?日期时间?内容类型和长度等?应答的正文就是服务器返回的HTML页面?应答头和正文之间也用CRLF分隔?

文档大全

本文标签: 请求服务器文档客户协议