Idle Works, Idle Thoughts

http协议

HTTP状态码

HTTP状态码(Status Code)非官方解释:

较为正式的解释:

状态码 说明
1xx 信息
100 Continue 服务器收到不完整的请求。客户端应重新发送一个完整请求。
101 Switching protocols 切换协议。如从 HTTP 切换到 WebSocket。
2xx 成功
200 OK 请求成功。对GET和POST请求应答的文档跟在其后。
3xx 重定向
300 Multiple Choices 请求的文档可在多个位置找到,并在返回的文档中列出
301 Moved Permanently 文档被永久转移,新URL在Location头中
302 Found 请求页面临时转移到了新地址。HTTP/1.0中叫Moved Temporatily。
304 Not Modified 文档内容没有修改,不返回Message body
305 Use Proxy 应从Location中指明的代理服务器提取文档
307 Temporary Redirect 与302同
4xx 客户端错误
400 Bad Request 请求出现语法错误,服务器不理解。
401 Authorization Required 请求页面需要认证(用户名和密码)。
403 Forbidden 页面禁止访问。
404 Not Found 没有找到请求页面。
405 Method Not Allowed 不允许的方法
408 Request Timeout 从建立连接到收到请求的间隔时间过长
5xx 服务器端错误
500 Internal Server Error HTTPServer内部错误
503 Service Temporarily Unavailable HTTPServer内部错误,暂时不能提供服务

302, 文档临时转移

youku.com重定向到www.youku.com:

$ curl -I youku.com
HTTP/1.1 302 Moved Temporarily
Location: http://www.youku.com/

HTML中的重定向写法:

<meta http-equiv="refresh" content=5 url="http://idleworks.com">

即告诉浏览器5秒后自动跳转到http://idleworks.com.

重定向常用于自动跳转,常见两种跳转:服务器内部跳转和服务器间跳转。

307, 重定向,

307重定向等同于302:

$ curl -I http://www.haskell.org
HTTP/1.1 307 Temporary Redirect
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch
Location: http://www.haskell.org/haskellwiki/Haskell

405错误

405 Method Not Allowed,表示不支持请求的方法,这个错误不常见。

例如用HEAD方法请求知乎,将返回405:

$ curl -I www.zhihu.com
HTTP/1.1 405 Method Not Allowed

按RFC 2616的描述,如果服务器返回405,应该同时返回允许的方法列表(The response MUST include an Allow header containing a list of valid methods for the requested resource.),但这个测试没有发现返回允许方法列表。

用GET方法访问则无问题:

$ curl -v www.zhihu.com
HTTP/1.1 200 OK

451错误

HTTP 451 Unavailable For Legal Reasons,因法律原因不可用。

当用户请求访问某个经政府审核等查核方法后认定不合法的来源时,就会显示这个错误代码;451数字源于1953年的反乌托邦小说《华氏451度》。