HTTP 302如何工作?

Gil*_*lla 44 http http-redirect

HTTP 302如何工作?我想知道内部情况

Mic*_*zek 46

你的意思是浏览器如何处理它?服务器发送302代码和Location标头,浏览器请求Location标头指定的新URI .

与此不同301 (Moved Permanently),浏览器继续使用原始URI来执行请求,以防302代码消失

  • 请注意,直到几年前,浏览器才会缓存301.现在,Chrome确实如此,我相信Firefox确实如此.IE9会. (3认同)

Tyl*_*nry 21

服务器返回带有代码的HTTP响应302,指示临时重定向,并包括Location:指示新URI 的标头,例如

HTTP/1.1 302 Found
Location: http://some-other-url
Run Code Online (Sandbox Code Playgroud)

并且可能由服务器自行决定其他标头.

浏览器通常将此作为指令自动为位置标头指定的其他URI发出新的单独请求.客户端(浏览器)不会被迫这样做(理论上,它可以只向用户显示消息,或者做任何其他想做的事情),但这就是HTTP客户端通常的行为方式.

请注意,由于302是临时重定向,因此行为良好的客户端将来会继续使用旧URL,而不是直接使用新URL(301是永久重定向).


xgM*_*gMz 9

来自:http: //www.ietf.org/rfc/rfc2616.txthttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

10.3.3 302找到

请求的资源暂时驻留在不同的URI下.由于重定向有时可能会被更改,因此客户端应该继续使用Request-URI来处理将来的请求.如果由Cache-Control或Expires头字段指示,则此响应仅可缓存.

临时URI应该由响应中的Location字段给出.除非请求方法是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.
Run Code Online (Sandbox Code Playgroud)