Daily-Interview-Question icon indicating copy to clipboard operation
Daily-Interview-Question copied to clipboard

第 128 题:Http 状态码 301 和 302 的应用场景分别是什么

Open yygmind opened this issue 4 years ago • 17 comments

yygmind avatar Aug 20 '19 02:08 yygmind

301:永久重定向; 302:临时重定向;

rookiezh avatar Aug 20 '19 02:08 rookiezh

https://http.cat/301
https://http.cat/302

blank1u avatar Aug 20 '19 02:08 blank1u

301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址。 302重定向只是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的。

aurora94 avatar Aug 20 '19 02:08 aurora94

301: 永久重定向

常用的例如域名跳转:http:**** => https:****

302: 临时重定向

需要向服务端请求是否过期,过期返回新数据,没过期返回状态吗302,然后客户端重定向,期间差别主要在于数据包的大小(没有过期的情况下,不需要再在数据包中附加数据返回,从而加速网络传输,提升速度)

ypf0088 avatar Aug 20 '19 02:08 ypf0088

解释见mdn: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。 302 Found 请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。 303 See Other 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。 304 Not Modified 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。

yaoqifa avatar Aug 20 '19 02:08 yaoqifa

重定向

JaniceDong avatar Aug 20 '19 02:08 JaniceDong

  • 301应用场景: 域名到期不想继续用这个,换了地址
  • 302应用场景: 做活动时候,从首页跳到活动页面,

nowherebutup avatar Aug 20 '19 08:08 nowherebutup

@buwanmei2 图中SEO这里说 301会把两个链接收录到同一个链接,不会像302一样导致链接数减少从而降低排名 最后在状态码这里又说 针对SEO,302更优于301。 这说法没问题吗?

ScholatLouis avatar Aug 20 '19 11:08 ScholatLouis

@ScholatLouis 我觉得这个说的不对,这个图忘了在哪里看到的了,大家只看使用场景就ok了

JaniceDong avatar Aug 21 '19 01:08 JaniceDong

这个图在之前发过的那道301,302对seo有什么影响那道题里出现过

song-le-yi avatar Aug 21 '19 07:08 song-le-yi

301: 资源永久移动到新的位置,并且这个响应默认情况下会被缓存,只有在第一次的时候,才会去真正的发起第一个请求,后面的都会被缓存起来,直接跳转到 redirect 的请求 image image 302: 临时跳转请求,默认情况下不会缓存。 image

wwervin72 avatar Aug 23 '19 04:08 wwervin72

对于用户来说没有什么区别,都是从一个旧地址跳转到了一个新地址,内容也指向了新地址,主要区别在搜索引擎 301: 认为旧地址不会再用到,会把地址跟内容都更新成新地址及其内容 302: 未登录用户跳转到登录页,请求地址404,跳转到首页等操作,只是临时的。搜索引擎认为跳转只是临时的,保留旧地址,抓取新的内容。

thinkfish avatar Aug 30 '19 07:08 thinkfish

可以看看百度首页 http://www.baodu.com 中的第一个请求(307)

Rabbitzzc avatar Mar 31 '21 01:03 Rabbitzzc

301: 永久重定向 302: 暂时性重定向

TheFirstSunday avatar Apr 19 '22 10:04 TheFirstSunday

@buwanmei2 图中SEO这里说 301会把两个链接收录到同一个链接,不会像302一样导致链接数减少从而降低排名 最后在状态码这里又说 针对SEO,302更优于301。 这说法没问题吗?

同问

Dylan0916 avatar Apr 20 '22 10:04 Dylan0916

想问下,浏览器对301和302的缓存情况是怎样的?我的理解是: 1、301会缓存 2、302不会缓存,除非指定cache-control或expires

like0413 avatar Nov 14 '22 09:11 like0413

您的来信已收到,我会尽快回复,谢谢

ScholatLouis avatar Nov 14 '22 09:11 ScholatLouis