您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

HTTP 协议状态码-3XX

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

有多个的值,需要客户端自己选择, 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

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

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

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

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

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

一般是在有缓存的情况下,客户端发起资源请求,服务端判断之前的资源未过,可以继续使用缓存的资源。经常客户端请求的头部会带上 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"

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

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

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

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

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


联系我
置顶