HTTP响应码
一、HTTP响应的第一行是状态信息表示请求的结果状态。
响应码分五种类型,由它们的第一位数字表示
| 码类别 | 描述 |
|---|---|
| 1xx | 信息,继续处理 |
| 2xx | 成功 |
| 3xx | 信息,继续处理 |
| 4xx | 客户端错误 |
| 5xx | 服务器错误 |
- 1xx:信息,继续处理
- 2xx:成功
- 3xx:重定向,
- 4xx:客户端错误
- 5xx:服务器错误
下面显示每个响应码及其含义: - 1xx
| 码类别 | 描述 |
|---|---|
| 100 | 继续 |
| 101 | 分组交换协 |
- 2xx
| 码类别 | 描述 |
|---|---|
| 200 | OK |
| 201 | 被创建 |
| 202 | 被采纳 |
| 203 | 非授权信息 |
| 205 | 重置内容 |
| 206 | 部分内容 |
- 3xx
| 码类别 | 描述 |
|---|---|
| 300 | 多选项 |
| 301 | 永久地传送 |
| 302 | 找到 |
| 303 | 参见其他 |
| 304 | 未改动 |
| 305 | 使用代理 |
| 307 | 暂时重定向 |
- 4xx
| 码类别 | 描述 |
|---|---|
| 400 | 错误请求 |
| 401 | 未授权 |
| 402 | 要求付费 |
| 403 | 禁止 |
| 404 | 未找到 |
| 405 | 不允许的方法 |
| 406 | 不被采纳 |
| 407 | 要求代理授权 |
| 408 | 请求超时 |
| 409 | 冲突 |
| 410 | 过期的 |
| 411 | 要求的长度 |
| 412 | 前提不成立 |
| 413 | 请求实例太大 |
| 414 | 请求URI太大 |
| 415 | 不支持的媒体类型 |
| 416 | 无法满足的请求范围 |
| 417 | 失败的预期 |
- 5xx
| 码类别 | 描述 |
|---|---|
| 500 | 内部服务器错误 |
| 501 | 未被使用 |
| 502 | 网关错误 |
| 503 | 不可用的服务 |
| 504 | 网关超时 |
| 505 | HTTP版本未被支持 |
HTTP头由主键/值对组成。
四种不同类型的头标:
- 通用头标:即可用于请求,也可用于响应。
- 请求头标:允许客户端传递关于自身的信息和希望的响应形式。
- 响应头标:服务器和于传递自身信息的响应。
- 实体头标:定义被传送资源的信息。即可用于请求,也可用于响应。
头标格式:<name>:<value><CRLF>
下面描述一些常用的头标
Allow:一个响应头标,它定义一个由位于请求URI中的次源所支持的HTTP方法列表。例如:Allow: GET,PUT
Accept:告诉服务器自己接受什么介质类型,按优先级排序;在一个以逗号为分隔的列表中,可以定义多种类型和使用通配符。 / 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type。例如:
Accept: image/jpeg,image/png,*/*Accept-Charset:浏览器申明自己接收的字符集,按优先级排序;在一个以逗号为分隔的列表中,可以定义多种类型和使用通配符。
例如:Accept-Charset: iso-8859-1,*,utf-8Accept-Encoding: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法 (gzip,deflate)
例如:Accept-Encoding:gzip,compress
Accept-Language: 浏览器申明自己接收的语言语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等。
例如:Accept-Language: en,deAccept-Ranges: 一个响应头标,WEB服务器表明自己是否接受获取其某个实体的一部分(比如文件的一部分)的请求。bytes:表示接受,none:表示不接受。
该头标的值被理解为请求范围的度量单位。
例如1Accept-Ranges: bytes1 或 1Accept-Ranges: none1
- Authorization: 当客户端接收到来自WEB服务器的 WWW-Authenticate 响应时,该头部来回应自己的身份验证信息给WEB服务器。
- Cache-Control:缓存方式
请求:no-cache(不要缓存的实体,要求现在从WEB服务器去取)
max-age:(只接受 Age 值小于 max-age 值,并且没有过期的对象)
max-stale:(可以接受过去的对象,但是过期时间必须小于max-stale 值)
min-fresh:(接受其新鲜生命期大于其当前 Age 跟 min-fresh 值之和的缓存对象)
响应: public(可以用 Cached 内容回应任何用户)
private(只能用缓存内容回应先前请求该内容的那个用户)
no-cache(可以缓存,但是只有在跟WEB服务器验证了其有效后,才能返回给客户端)
max-age:(本响应包含的对象的过期时间)
ALL: no-store(不允许缓存) - Connection:
请求: close(在完成本次请求的响应后,断开连接)。
keepalive(长链接)。
响应: close(连接已经关闭)。
keepalive(连接保持着,在等待本次连接的后续请求)。
Keep-Alive:如果浏览器请求保持连接,则该头部表明希望 WEB 服务器保持连接多长时间(秒)。
例如:Keep-Alive:300
- Date: 发送HTTP消息的日期。例如:Date: Mon,10PR 18:42:51 GMT
- ETag: 就是一个对象(比如URL)的标志值,就一个对象而言,比如一个 html 文件,如果被修改了,其 Etag 也会别修改。
所以,ETag 的作用跟 Last-Modified 的作用差不多,主要供 WEB 服务器 判断一个对象是否改变了。
比如前一次请求某个 html 文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获得的 ETag 值发送给 WEB 服务器,然后 WEB 服务器
会把这个 ETag 跟该文件的当前 ETag 进行对比,然后就知道这个文件有没有改变了。
- Expired: WEB服务器表明该实体将在什么时候过期,对于过期了的对象,只有在跟WEB服务器验证了其有效性后,才能用来响应客户请求。
是 HTTP/1.0 的头部。
例如:Expires:Sat, 23 May 2009 10:02:12 GMT
Host: 客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号。
例如:Host:rss.sina.com.cnIf-Match: 如果对象的 ETag 没有改变,其实也就意味著对象没有改变,才执行请求的动作。
If-None-Match: 如果对象的 ETag 改变了,其实也就意味著对象也改变了,才执行请求的动作。If-Modified-Since: 如果请求的对象在该头部指定的时间之后修改了,才执行请求的动作(比如返回对象),否则返回代码304,告诉浏览器该对象没有修改。
例如:If-Modified-Since:Thu, 10 Apr 2008 09:14:42 GMT
If-Unmodified-Since:如果请求的对象在该头部指定的时间之后没修改过,才执行请求的动作(比如返回对象)。If-Range: 浏览器告诉 WEB 服务器,如果我请求的对象没有改变,就把我缺少的部分给我,如果对象改变了,就把整个对象给我。 浏览器通过发送请求对象的
ETag 或者 自己所知道的最后修改时间给 WEB 服务器,让其判断对象是否改变了。总是跟 Range 头部一起使用。Last-Modified: WEB 服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间等等。
例如:Last-Modified:Tue, 06 May 2008 02:42:43 GMT
HTTP 请求消息头部实例
Host:rss.sina.com.cn
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language:zh-cn,zh;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Cookie:userId=C5bYpXrimdmsiQmsBPnE1Vn8ZQmdWSm3WRlEB3vRwTnRtW
If-Modified-Since:Sun, 01 Jun 2008 12:05:30 GMT
Cache-Control:max-age=0
HTTP 响应消息头部实例:
Status:OK - 200
Date:Sun, 01 Jun 2008 12:35:47 GMT
Server:Apache/2.0.61 (Unix)
Last-Modified:Sun, 01 Jun 2008 12:35:30 GMT
Accept-Ranges:bytes
Content-Length:18616
Cache-Control:max-age=120
Expires:Sun, 01 Jun 2008 12:37:47 GMT
Content-Type:application/xml
Age:2
X-Cache:HIT from 236-41.D07071951.sina.com.cn
Via:1.0 236-41.D07071951.sina.com.cn:80 (squid/2.6.STABLE13)
Connection:close