HTTP 302如何工作?我想知道内幕
答案 0 :(得分:45)
你的意思是浏览器如何处理它?服务器发送302
代码和Location
标头,浏览器会请求Location
标头指定的新URI。
与301 (Moved Permanently)
不同,浏览器继续使用原始URI来执行请求,以防302
代码消失
答案 1 :(得分:20)
服务器返回一个代码为302
的HTTP响应,指示临时重定向,并包含一个指示新URI的Location:
标头,例如
HTTP/1.1 302 Found
Location: http://some-other-url
可能由服务器自行决定其他标题。
浏览器通常将此作为指令自动为位置标头指定的其他URI发出新的单独请求。客户端(浏览器)不是强制来执行此操作(理论上,它可以向用户显示消息,或者执行其他任何其他操作),但这就是HTTP客户端通常的行为方式。
请注意,由于302是临时重定向,因此行为良好的客户端将来会继续使用旧URL,而不是直接使用新URL(301是永久重定向) )。
答案 2 :(得分:9)
自: http://www.ietf.org/rfc/rfc2616.txt 和 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
10.3.3 302 Found
请求的资源暂时驻留在不同的URI下。 由于重定向有时可能会改变,客户端应该这样做 继续使用Request-URI用于将来的请求。这个回应 如果由Cache-Control或Expires标头指示,则仅可缓存 字段。
临时URI应该由位置字段给出 响应。除非请求方法是HEAD,否则是实体 响应应该包含一个带有超链接的短超文本注释 新的URI。
如果收到302状态代码以响应其他请求 比GET或HEAD,用户代理不得自动重定向 除非可以由用户确认,否则请求,因为这可能 改变发出请求的条件。
Note: RFC 1945 and RFC 2068 specify that the client is not allowed
to change the method on the redirected request. However, most
existing user agent implementations treat 302 as if it were a 303
response, performing a GET on the Location field-value regardless
of the original request method. The status codes 303 and 307 have
been added for servers that wish to make unambiguously clear which
kind of reaction is expected of the client.
答案 3 :(得分:2)
什么的内部? 302是服务器给客户端的返回码,客户端做的是它。 RFC提供了客户应该做什么的指导,但在现实世界中,301,302,303和307都由主流浏览器以相同的方式处理。
答案 4 :(得分:1)
只是一个插件 - 重要的是,停止客户端连续/频繁地使用相同的请求命中相同的服务器URL。