HTTP 3xx 系列状态码
最乱之系列
最迷惑之标准名
最滥用之王

● 300 Multiple Choices: 多个(目标)选择; 服务器响应了请求但有多个重定向目标, 在多个 Link 标头中指示客户端进行主动选择. Chrome 和 Firefox 没有处理这个状态码的标准方法, 如果含有 Location 则 Firefox 会立即重定向, Chrome 会忽略.
● 301 Moved Permanently: 永久移动; 指示客户端访问的资源已经永久移动到了一个位于响应标头为 Location 的新位置. 客户端应该继续在新位置重新相同请求, 并且应该更新旧地址为新的 Location 位置. 但是大多数客户端不会对 POST 请求得到的 HTTP:301 响应进行正确地继续 POST 行为, 还会往响应的 Location进行 GET 请求获取资源, 这种客户端意图为 "POST 已经成功, 但是结果是在新地址上", 这本来应该是 HTTP:303 的指示, IETF 针对这种普遍错误的情况引入了新的 HTTP:308 状态码.
● 302 Found: 已找到; 指示客户端请求地址上的资源被暂时保存在了其他位置, 但客户端不应该像 HTTP:301 那样更新旧地址. 和 HTTP:301 的现实情况相同, 大多数客户端的 POST 意图并不会认为 HTTP:302 需要继续 POST, IETF 配套引入了 HTTP:307 状态码.
● 303 See Other: 在其他位置查看; 指示客户端请求的结果要在另一个 Location 标头位置找到, 然而这种行为在大多数的主流客户端中被用在了 HTTP:302 上. 这个状态码可以用来响应所有客户端 HTTP 请求方法, IETF 还要求除了 HEAD 请求响应外, 服务器应该在响应主体中包含一个和 Location 标头相同指向的超链接.
● 304 Not Modified: 没有更改; 服务器响应客户端的 GET 或 HEAD 条件请求. 例如, 客户端在请求中携带 If-None-Match 标头用于匹配上一次的服务端响应标头 Etag, If-Modified-Since 用于匹配 Last-Modified.
● 305 Use Proxy: 使用代理; 服务器响应客户端要求使用特定 Location 标头中的代理地址才能访问资源, 由于安全问题已被弃用.
● 306 Switch Proxy: 切换代理; 废弃草案, 和 HTTP:305 类似, 要求客户端切换到 Set-Proxy 响应标头中的代理地址, 并应用其中的代理规则.
● 307 Temporary Redirect: 临时重定向; 类似 HTTP:302, 但要求客户端必须在新的位置 Location 响应标头上继续做同样的请求, 不更新旧地址, 特别是 POST. 2014 年的 IETF 提案标准, 对 HTTP 来说太新, 一些旧客户端不支持.
● 308 Permanent Redirect: 永久重定向; 类似 HTTP:301, 但要求客户端必须在新的位置 Location 响应标头上继续做同样的请求, 更新旧地址为新地址, 特别是 POST. 2014 年的 IETF 提案标准, 对 HTTP 来说太新, 一些旧客户端不支持.

PS: 怎么 HTTP:301 和 HTTP:302 对应功能配对的新状态码的和都是 HTTP:609.
Series of posts on HTTP status codes
#HTTP #Web

via Fediverse@cxplay (author: @cxplay@sir.social)
 
 
Back to Top