第 128 题:Http 状态码 301 和 302 的应用场景分别是什么?
程序方向来讲这两个状态码,实际上没有多大的区别,都是跳转的返回状态,和 200,202,307 等同的效果。但从作用上来讲,301 为永久重定向,302 为临时重定向,故此还是有本质的不同。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 第 129 题:输出以下代码执行结果
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
这个图在之前发过的那道301,302对seo有什么影响那道题里出现过
301: 资源永久移动到新的位置,并且这个响应默认情况下会被缓存,只有在第一次的时候,才会去真正的发起第一个请求,后面的都会被缓存起来,直接跳转到 redirect 的请求
302: 临时跳转请求,默认情况下不会缓存。
对于用户来说没有什么区别,都是从一个旧地址跳转到了一个新地址,内容也指向了新地址,主要区别在搜索引擎
301: 认为旧地址不会再用到,会把地址跟内容都更新成新地址及其内容
302: 未登录用户跳转到登录页,请求地址404,跳转到首页等操作,只是临时的。搜索引擎认为跳转只是临时的,保留旧地址,抓取新的内容。
可以看看百度首页 http://www.baodu.com 中的第一个请求(307)
301: 永久重定向
302: 暂时性重定向
同问
@ScholatLouis 我觉得这个说的不对,这个图忘了在哪里看到的了,大家只看使用场景就ok了
@buwanmei2
图中SEO这里说 301会把两个链接收录到同一个链接,不会像302一样导致链接数减少从而降低排名
最后在状态码这里又说 针对SEO,302更优于301。
这说法没问题吗?
解释见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 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
301: 永久重定向
302: 临时重定向
301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址。
302重定向只是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的。
301:永久重定向;
302:临时重定向;