为了避开这个问题, HTTP/1.1 规范指出,对于 HTTP/1.1 客户端,用 307 状态码取代 302 状态码来进行临时重定向。这样服务器就可以将 302 状态码保留起来,为 HTTP/1.0 客户端使用了。
这样一来,服务器要选择适当的重定向状态码放入重定向响应中发送,就需要查看客户度的 HTTP 版本了。
400 ~ 499 —— 客户端错误状态码
有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求报文,或者最常见的是,请求一个不存在的 URL。
状态码 原因短语 含义400 Bad Request 用于告知客户端它发送过来一个错误的请求
401 Unauthorized 与适当的首部一同返回,在这些首部中请求客户端在获取对资源的访问权之前,对自己进行认证。
402 Payment Required 现在这个状态码还未使用,但已经被保留,以作未来之用。
403 Forbidden 用于说明请求被服务器拒绝了。如果服务器想说明为什么拒绝请求,可以包含实体的主体部分来对原因进行描述。但这个状态码通常是在服务器不想说明拒绝原因的时候使用的
404 Not Found 用于说明服务器无法找到所请求的 URL。通常会包含一个实体,以便客户端应用程序显示给用户看。
405 Method Not Allowed 发起的请求中带有所请求的 URL 不支持的方法时,使用此状态码。应该在响应中包含 Allow 首部,以告知客户端对所请求的资源可以使用哪些方法。
406 Not Acceptable 客户端可以指定参数来说明他们愿意接收什么类型的实体。服务器没有与客户端可接受的 URL 相匹配的资源时,使用此代码。通常,服务器会包含一些首部,以便告知客户端弄清楚什么请求无法满足。
407 Proxy Authentication Required 与 401 状态码类似,但用于要求对资源进行认证的代理服务器。
408 Request Timeout 如果客户端完成请求所花的时间太长,服务器可以回送此状态码,并关闭连接。超时时长随服务器的不同而不同,但通常对所有的合法请求来说,都是够长的。
409 Conflict 用于说明请求可能在资源上引发的一些冲突。服务器担心请求会引发冲突时,可以发送此状态码。响应中应该包含描述冲突的主体。
410 Gone 与 404 类似,只是服务器曾经拥有过此资源。主要用于 Web 站点的维护,这样服务器的管理者就可以在资源被移除的情况下通知客户端了。
411 Length Required 服务器要求在请求报文中包含 Content-Length 首部时使用。更多关于 Content-Length 首部的信息请参见 3.5.4 节。
412 Precondition Failed 客户端发起了条件请求,且其中一个条件失败了的时候使用。客户端包含了 Expect 首部时发起的就是条件请求。更多有关 Expect 首部的内容请参见附录 C 中 Expect 部分
413 Request Entity Too Large 客户端发送的实体主体部分比服务器能够或者希望处理的要大时,使用此状态码
414 Request URI Too Long 客户端所发请求中的请求 URL 比服务器能够或者希望处理的要长时,使用此状态码
415 Unsupported Media Type 服务器无法理解或无法支持客户端所发实体的内容类型时,使用此状态码
416 requested Range Not Satisfiable 请求报文所请求的是指定资源的某个范围,而此范围无效或者无法满足时,使用此状态码。
417 Expectation Failed
请求的 Expect 请求首部包含了一个期望,但服务器无法满足此期望时,使用此状态码。
如果代理或者其他中间应用程序有确切证据说明源服务器会为某请求产生一个失败的期望,就可以发送这个响应状态码。
500 ~ 599 —— 服务器错误状态码