HTTP 302

302 Found，原始描述短语为Moved Temporarily，是HTTP协议中的一个状态码（Status Code）。可以简单的理解为该资源原本确实存在，但已经被临时改变了位置；换而言之，就是请求的资源暂时驻留在不同的URI下，故而除非特别指定了缓存头部指示，该状态码不可缓存。

对于服务器，通常会给浏览器发送HTTP Location头部来重定向到新的新位置。

定义
根据定义，该响应代码的使用场景是，请求的资源暂时驻留在不同的URI下。

其特征被定义为：
 客户端收到的新的URI，不是原始请求资源的替代引用。
 只有当服务器发出Cache-Control或Expires头字段进行指示，此响应才能被缓存，否则不能被缓存。
 临时URI应该由响应头部中的Location字段给出。
 除非请求方法是HEAD ，否则响应的实体应该包含一个带有超链接到新的URI的短HTML注释。
 如果在除GET或HEAD两种请求方法之外的请求时，接收到302状态码，客户端不得自动重定向请求，除非用户可以确认；否则可能会更改发出请求的条件。
 如果一个客户端有链接编辑能力，其应当把所有的引用链接重定向到新的URL上。
 重定向到新地址时，客户端必须使用GET方法请求新地址。

例子
客户端请求:
GET /blog HTTP/1.1
Host: www.example.com
第一种服务器回应，不带缓存头:
HTTP/1.1 302 Found
Location: https://www-temp.example.org/

第二种服务器回应，带缓存头:
HTTP/1.1 302 Found
Location: https://www-temp.example.org/
Cache-control: private; max-age=600

 服务器配置 
这是一个例子，展示如^www\.(.*)$ [NC]
RewriteRule ^
RewriteRule ^(.*)$ https://example.com/$1{{Dead link|date=2019年10月 |bot=InternetArchiveBot |fix-attempted=yes }} [R,L] 

等价的Nginx配置方式：
location /old/url/ {
    return 302 /new/url;
}

这是使用PHP实现HTTP 302重定向的方式：<?php 
header("HTTP/1.1 302 Found"); 
header("Location: http://example.com/newpage.html%5B%5D"); 
exit();
?>

 客户端实现问题 
虽然RFC 1945和RFC 2068两个规范不允许客户端在重定向时改变请求的方法，但是很多现存的浏览器将302响应视作为303响应 ，并且径自使用GET方式访问在Location中规定的 URI，而无视原先请求的方法，这是不规范的实现。

因此状态码303和307被添加了进来，用以明确服务器期待客户端进行何种反应。

 相關條目 
 .htaccess
 HTTP狀態碼
 URL重寫
 HTTP 301
 HTTP 303
 HTTP 307
 HTTP Location

 参考来源 

 外部連結 
 HTTP/1.1 Error codes in RFC 2616 
 RFC 1945
 RFC 2068
 RFC 7230
 RFC 7231

Category:計算機錯誤
Category:HTTP