<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=HTTP_302</id>
	<title>HTTP 302 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=HTTP_302"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=HTTP_302&amp;action=history"/>
	<updated>2026-06-27T10:01:57Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=HTTP_302&amp;diff=2373644&amp;oldid=prev</id>
		<title>2021年9月7日 (二) 15:21 imported&gt;AnYiLin</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=HTTP_302&amp;diff=2373644&amp;oldid=prev"/>
		<updated>2021-09-07T15:21:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA|G1=IT}}&lt;br /&gt;
{{HTTP}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;302 Found&amp;#039;&amp;#039;&amp;#039;，原始描述短语为&amp;#039;&amp;#039;&amp;#039;Moved Temporarily&amp;#039;&amp;#039;&amp;#039;，是[[HTTP协议]]中的一个状态码（Status Code）。可以简单的理解为该资源原本确实存在，但已经被&amp;#039;&amp;#039;&amp;#039;临时&amp;#039;&amp;#039;&amp;#039;改变了位置；换而言之，就是请求的资源暂时驻留在不同的URI下&amp;lt;ref&amp;gt;{{cite web|url=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html|title=W3C: 10 Status Code Definitions|accessdate=2014-06-01|archive-date=2010-03-16|archive-url=https://web.archive.org/web/20100316011642/http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html|dead-url=no}}&amp;lt;/ref&amp;gt;，故而除非特别指定了缓存头部指示，该状态码不可缓存。&lt;br /&gt;
&lt;br /&gt;
对于服务器，通常会给浏览器发送[[HTTP Location]]头部来重定向到新的新位置。&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
根据定义&amp;lt;ref name=&amp;quot;h1&amp;quot;&amp;gt;{{cite web|last1=T.|first1=Fielding, Roy|last2=Tim|first2=Berners-Lee,|last3=Henrik|first3=Frystyk,|title=Hypertext Transfer Protocol -- HTTP/1.0|url=https://tools.ietf.org/html/rfc1945#section-9.3|website=tools.ietf.org|language=en|accessdate=2017-07-04|archive-date=2010-11-30|archive-url=https://web.archive.org/web/20101130120327/http://tools.ietf.org/html/rfc1945#section-9.3|dead-url=no}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;h1.1&amp;quot;&amp;gt;{{cite web|last1=C.|first1=Mogul, Jeffrey|last2=Jim|first2=Gettys,|last3=Tim|first3=Berners-Lee,|last4=Henrik|first4=Frystyk,|title=Hypertext Transfer Protocol -- HTTP/1.1|url=https://tools.ietf.org/html/rfc2068#section-10.3.2|website=tools.ietf.org|language=en|accessdate=2017-07-04|archive-date=2018-06-07|archive-url=https://web.archive.org/web/20180607164335/https://tools.ietf.org/html/rfc2068#section-10.3.2|dead-url=no}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|last1=J.|first1=Leach, Paul|last2=Tim|first2=Berners-Lee,|last3=C.|first3=Mogul, Jeffrey|last4=Larry|first4=Masinter,|last5=T.|first5=Fielding, Roy|last6=James|first6=Gettys,|title=Hypertext Transfer Protocol -- HTTP/1.1|url=https://tools.ietf.org/html/rfc2616#section-10.3.2|website=tools.ietf.org|language=en|accessdate=2017-07-04|archive-date=2011-03-07|archive-url=https://web.archive.org/web/20110307142107/http://tools.ietf.org/html/rfc2616#section-10.3.2|dead-url=no}}&amp;lt;/ref&amp;gt;，该响应代码的使用场景是，请求的资源暂时驻留在不同的URI下。&lt;br /&gt;
&lt;br /&gt;
其特征被定义为：&lt;br /&gt;
* 客户端收到的新的URI，不是原始请求资源的替代引用。&lt;br /&gt;
* 只有当服务器发出Cache-Control或Expires头字段进行指示，此响应才能被缓存，否则不能被缓存。&lt;br /&gt;
* 临时URI应该由响应头部中的Location字段给出。&lt;br /&gt;
* 除非请求方法是HEAD ，否则响应的实体应该包含一个带有超链接到新的URI的短HTML注释。&lt;br /&gt;
* 如果在除GET或HEAD两种请求方法之外的请求时，接收到302状态码，客户端不得自动重定向请求，除非用户可以确认；否则可能会更改发出请求的条件。&lt;br /&gt;
* 如果一个客户端有链接编辑能力，其应当把所有的引用链接重定向到新的URL上。&lt;br /&gt;
* 重定向到新地址时，客户端必须使用GET方法请求新地址。&lt;br /&gt;
&lt;br /&gt;
==例子==&lt;br /&gt;
客户端请求:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;http&amp;quot;&amp;gt;&lt;br /&gt;
GET /blog HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
第一种服务器回应，不带缓存头:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;http&amp;quot;&amp;gt;&lt;br /&gt;
HTTP/1.1 302 Found&lt;br /&gt;
Location: https://www-temp.example.org/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第二种服务器回应，带缓存头:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;http&amp;quot;&amp;gt;&lt;br /&gt;
HTTP/1.1 302 Found&lt;br /&gt;
Location: https://www-temp.example.org/&lt;br /&gt;
Cache-control: private; max-age=600&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 服务器配置 ==&lt;br /&gt;
这是一个例子，展示如&amp;lt;pre&amp;gt;^www\.(.*)$ [NC]&lt;br /&gt;
RewriteRule ^&lt;br /&gt;
RewriteRule ^(.*)$ https://example.com/$1{{Dead link|date=2019年10月 |bot=InternetArchiveBot |fix-attempted=yes }} [R,L] &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
等价的[[NGINX|Nginx]]配置方式：&lt;br /&gt;
&amp;lt;pre&amp;gt;location /old/url/ {&lt;br /&gt;
    return 302 /new/url;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这是使用[[PHP]]实现HTTP 302重定向的方式：&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
header(&amp;quot;HTTP/1.1 302 Found&amp;quot;); &lt;br /&gt;
header(&amp;quot;Location: http://example.com/newpage.html%5B%5D&amp;quot;); &lt;br /&gt;
exit();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 客户端实现问题 ==&lt;br /&gt;
虽然&amp;lt;nowiki/&amp;gt;RFC 1945&amp;lt;nowiki/&amp;gt;和&amp;lt;nowiki/&amp;gt;RFC 2068&amp;lt;nowiki/&amp;gt;两个规范不允许客户端在重定向时改变请求的方法，但是很多现存的浏览器将302响应视作为[[HTTP 303|303]]响应 ，并且径自使用GET方式访问在Location中规定的 URI，而无视原先请求的方法，这是不规范的实现。&amp;lt;ref name=&amp;quot;ruby-on-rails-ActionController-Redirecting-redirect_to&amp;quot;&amp;gt;{{cite web|url = http://api.rubyonrails.org/classes/ActionController/Redirecting.html#method-i-redirect_to|title = Reference of method redirect_to in Ruby Web Framework &amp;quot;Ruby on Rails&amp;quot;. It states: The redirection happens as a &amp;quot;302 Moved&amp;quot; header unless otherwise specified.|accessdate = 2012-06-30|archive-date = 2012-07-05|archive-url = https://web.archive.org/web/20120705235048/http://api.rubyonrails.org/classes/ActionController/Redirecting.html#method-i-redirect_to|dead-url = yes}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
因此状态码303和[[HTTP 307|307]]被添加了进来，用以明确服务器期待客户端进行何种反应。&amp;lt;ref name=&amp;quot;RFC7230-10&amp;quot;&amp;gt;{{cite web|url = http://tools.ietf.org/html/rfc7231#section-6.4|title = Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, Section 6.4|publisher = [[IETF]]|accessdate = 2014-06-12|archive-date = 2017-05-25|archive-url = https://web.archive.org/web/20170525004653/https://tools.ietf.org/html/rfc7231#section-6.4|dead-url = no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 相關條目 ==&lt;br /&gt;
* [[.htaccess]]&lt;br /&gt;
* [[HTTP狀態碼]]&lt;br /&gt;
* [[URL重寫]]&lt;br /&gt;
* [[HTTP 301]]&lt;br /&gt;
* [[HTTP 303]]&lt;br /&gt;
* [[HTTP 307]]&lt;br /&gt;
* [[HTTP Location]]&lt;br /&gt;
&lt;br /&gt;
== 参考来源 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
* [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html HTTP/1.1 Error codes in RFC 2616]{{Wayback|url=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html |date=20100316011642 }} {{en icon}}&lt;br /&gt;
* RFC 1945&lt;br /&gt;
* RFC 2068&lt;br /&gt;
* RFC 7230&lt;br /&gt;
* RFC 7231&lt;br /&gt;
&lt;br /&gt;
[[Category:計算機錯誤]]&lt;br /&gt;
[[Category:HTTP]]&lt;/div&gt;</summary>
		<author><name>imported&gt;AnYiLin</name></author>
	</entry>
</feed>