首页 > 服务器 > HTTP 入门教程 > HTTP 协议状态码-3XX

HTTP 协议状态码-3XX

3XX 代表重定向,代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

1. 300 Multiple Choices

有多个重定向的值,需要客户端自己选择, Location 的值是服务端建议的值。

HTTP/1.1 300 Multiple Choices
Access-Control-Allow-Headers: Content-Type,User-Agent
Access-Control-Allow-Origin: *
Link: </foo> rel="alternate"
Link: </bar> rel="alternate"
Content-Type: text/html
Location: /foo

2. 301 Moved Permanently

请求的资源已经永久性的转移了,新资源 URI 在头部 Location指明,这时候如果浏览器有书签,或者请求地址的缓存,最好都能替换成 Location 对应的值。

HTTP/1.1 301 Moved Permanently
Location: https://www.imocc.com/http/301-moved-permanently

3. 302 Found

301 相似,只是 302 代表的资源转移地址是临时的。

4. 303 See Other

303 状态码和 302 状态码有着相同的功能,但 303 状态码明 确表示客户端应当采用 GET 方法 请求 Location 的地址获取资源。

如果是以 POST 访问某个请求,返回 303 ,此时应该换成 GET 方法去请求新地址。

5. 304 Not Modified

一般是在有缓存的情况下,客户端发起资源获取请求,服务端判断之前的资源未修改过,可以继续使用缓存的资源。经常客户端请求的头部会带上 If-None-Match If-Modified-Since If-Match 等带有条件的头部字段。

客户端

GET /foo HTTP/1.1
Accept: text/html
If-None-Match: "some-string"

服务端

HTTP/1.1 304 Not Modified
ETag: "some-string"

6. 305 Use Proxy

被请求的资源必须通过指定的代理才能被访问。Location 域中将给出指定的代理所在的 URI 信息,接收者需要重复发送一个单独的请求,通过这个代理才能访问相应资源。只有原始服务器才能建立305响应。

HTTP/1.1 305 Use Proxy
Location: https://proxy.example.org:8080/

7. 306 Switch Proxy

客户端已经是在代理模式,服务端可能出于安全因素,提示客户端需要切换一个新的代理。
306 在新的规范中已经不在使用,该编码保留。

HTTP/1.1 306 Switch Proxy
Set-Proxy: SET; proxyURI="https://proxy.imooc.com:8080/" scope="http://", seconds=100

8. 307 Temporary Redirect

307302 一样,都是对临时资源的重定向,不同的是 307 明确要求重定向的请求必须跟第一次的请求类型一样。第一次是 GET 第二次也必须是 GET,同样如果第一次是 POST,第二次也必须是 POST。302 则没有这么明确的要求,这可能导致有些浏览器第一次发出 POST,第二次却用 GET 重定向,而第二次实际上要求的是 POST,就容易出错。
307 是后面新增加的,这里提倡用 307 代替 302

本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈