fbpx
维基百科

HTTP 302

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

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

定义

根据定义[2][3][4],该响应代码的使用场景是,请求的资源暂时驻留在不同的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 1945RFC 2068两个规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应 ,并且径自使用GET方式访问在Location中规定的 URI,而无视原先请求的方法,这是不规范的实现。[5]

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

相關條目

参考来源

  1. ^ W3C: 10 Status Code Definitions. [2014-06-01]. (原始内容于2010-03-16). 
  2. ^ T., Fielding, Roy; Tim, Berners-Lee,; Henrik, Frystyk,. Hypertext Transfer Protocol -- HTTP/1.0. tools.ietf.org. [2017-07-04]. (原始内容于2010-11-30) (英语). 
  3. ^ C., Mogul, Jeffrey; Jim, Gettys,; Tim, Berners-Lee,; Henrik, Frystyk,. Hypertext Transfer Protocol -- HTTP/1.1. tools.ietf.org. [2017-07-04]. (原始内容于2018-06-07) (英语). 
  4. ^ J., Leach, Paul; Tim, Berners-Lee,; C., Mogul, Jeffrey; Larry, Masinter,; T., Fielding, Roy; James, Gettys,. Hypertext Transfer Protocol -- HTTP/1.1. tools.ietf.org. [2017-07-04]. (原始内容于2011-03-07) (英语). 
  5. ^ . [2012-06-30]. (原始内容存档于2012-07-05). 
  6. ^ Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, Section 6.4. IETF. [2014-06-12]. (原始内容于2017-05-25). 

外部連結

http, found, 原始描述短语为moved, temporarily, 是http协议中的一个状态码, status, code, 可以简单的理解为该资源原本确实存在, 但已经被临时改变了位置, 换而言之, 就是请求的资源暂时驻留在不同的uri下, 故而除非特别指定了缓存头部指示, 该状态码不可缓存, 对于服务器, 通常会给浏览器发送http, location头部来重定向到新的新位置, 目录, 定义, 例子, 服务器配置, 客户端实现问题, 相關條目, 参考来源, 外部連結定义, 编辑根据定义, 该响应代. 302 Found 原始描述短语为Moved Temporarily 是HTTP协议中的一个状态码 Status Code 可以简单的理解为该资源原本确实存在 但已经被临时改变了位置 换而言之 就是请求的资源暂时驻留在不同的URI下 1 故而除非特别指定了缓存头部指示 该状态码不可缓存 对于服务器 通常会给浏览器发送HTTP Location头部来重定向到新的新位置 目录 1 定义 2 例子 3 服务器配置 4 客户端实现问题 5 相關條目 6 参考来源 7 外部連結定义 编辑根据定义 2 3 4 该响应代码的使用场景是 请求的资源暂时驻留在不同的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重定向的方式 lt php header HTTP 1 1 302 Found header Location http example com newpage html 5B 5D exit gt 客户端实现问题 编辑虽然RFC 1945和RFC 2068两个规范不允许客户端在重定向时改变请求的方法 但是很多现存的浏览器将302响应视作为303响应 并且径自使用GET方式访问在Location中规定的 URI 而无视原先请求的方法 这是不规范的实现 5 因此状态码303和307被添加了进来 用以明确服务器期待客户端进行何种反应 6 相關條目 编辑 htaccess HTTP狀態碼 URL重寫 HTTP 301 HTTP 303 HTTP 307 HTTP Location参考来源 编辑 W3C 10 Status Code Definitions 2014 06 01 原始内容存档于2010 03 16 T Fielding Roy Tim Berners Lee Henrik Frystyk Hypertext Transfer Protocol HTTP 1 0 tools ietf org 2017 07 04 原始内容存档于2010 11 30 英语 C Mogul Jeffrey Jim Gettys Tim Berners Lee Henrik Frystyk Hypertext Transfer Protocol HTTP 1 1 tools ietf org 2017 07 04 原始内容存档于2018 06 07 英语 J Leach Paul Tim Berners Lee C Mogul Jeffrey Larry Masinter T Fielding Roy James Gettys Hypertext Transfer Protocol HTTP 1 1 tools ietf org 2017 07 04 原始内容存档于2011 03 07 英语 Reference of method redirect to in Ruby Web Framework Ruby on Rails It states The redirection happens as a 302 Moved header unless otherwise specified 2012 06 30 原始内容存档于2012 07 05 Hypertext Transfer Protocol HTTP 1 1 Semantics and Content Section 6 4 IETF 2014 06 12 原始内容存档于2017 05 25 外部連結 编辑HTTP 1 1 Error codes in RFC 2616 页面存档备份 存于互联网档案馆 英文 RFC 1945 RFC 2068 RFC 7230 RFC 7231 取自 https zh wikipedia org w index php title HTTP 302 amp oldid 67585424, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。