侧边栏壁纸
博主头像
小周的知识站 博主等级

行动起来,活在当下

  • 累计撰写 80 篇文章
  • 累计创建 12 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

HTTP状态码301和302的区别详解

Administrator
2024-08-13 / 0 评论 / 0 点赞 / 15 阅读 / 0 字

HTTP状态码301和302的区别详解

1 简介

HTTP的状态码中,301和302都是网页重定向跳转,但是两者的使用场景和效果是不一样的。

2 301永久重定向

301状态码是永久重定向(Moved Permanently),表示请求的资源已经永久地转移到新的位置,这包含域名的改变或者是资源路径的改变。

抓取一个301重定向的数据包如下,内容如下:

  • Location字段表示重定向后的资源新位置

  • Request URL字段表示请求的资源旧位置

使用Burp抓取,也可以看到Location字段,即重定向后的位置

3 302临时重定向

302状态是临时重定向(Move Temporarily),表示请求的资源临时地转移到新的位置,一般是24-48小时以内的转移会用到302。

对于302的使用是有规范的,只有在资源位置24到48小时内临时转移时,才可以使用302重定向,超过就必须使用301永久重定向。

虽然说短时间的资源位置转移会用到302临时重定向,但是并不提倡使用302,尽量使用301永久重定向。

4 为何要重定向?

这个问题我也是困惑了很久,一直不理解为什么会有重定向这个操作?

于是查询得知:

  • 网站是会被大量用户收藏在自己的浏览器收藏夹的,当然收藏的是URL,即资源位置,当网站原资源路径发生改变时,如果不进行重定向操作,当用户再次访问收藏的资源时,由于原位置已经改变不存在,那么服务器只会给用户返回404,这是不应该发生的。

  • 因此出现了重定向操作,即当用户访问改变了位置的资源时,通过服务器的反馈得知资源位置已经改变,随即浏览器就会访问改变后的资源位置,而不会引发404。

这就是为什么会出现重定向。

5 何时会重定向?

至于何时会重定向,结合网上给出的,大致有以下几种情况:

  • 域名更换(旧域名更换为新域名)

  • 多域名跳转(多个域名跳转至主站,进行引流)

  • 网站调整(如改变网页目录结构)

  • 路径改变(如网页被移到一个新地址)

  • 网页扩展名改变(如应用需要把.php改成.html或.shtml)

在这几中情况中,一般只有原路径或域名存在的情况下可能会使用到302,其余的都推荐使用301。

6 301和302的区别

通过上文已知,301和302都是重定向,但是有临时和永久的区别,

  • 302虽然是重定向,但鉴于其实临时的,所以浏览器对于自己的URL缓存不会改变,依然是原路径。

    在302重定向结束后,只需要删除相应的重定向相关代码即可恢复原状,用户点击收藏夹依然可以访问资源。

  • 301是是永久的,所以浏览器会更改自身的URL缓存,将旧的路径换为新的路径。

    在301重定向结束后,如果只删除重定向相关代码,客户端的URL缓存是不会改变的,因此用户点击收藏夹时,就会访问之前301时新的URL,但是该路径已经被删除换为旧的路径,因此用户得到的只会是404。
    此时要想让用户可以正常访问,可通过以下几种方式:

    服务端再次301重定向,将改变后的地址重定向到原地址,这样更新了URL的用户再次点击时就会重新更新回原地址;

    客户端清理浏览器缓存,这样就会把更新了的URL清除掉,点击收藏夹依然是旧的URL。

    一般都是通过第一种方式,让服务端来进行相关操作。

    而且,302的临时重定向不会将原搜索流量导入到新的地址,但是301会,这对于搜索排名有很大用处。

    知道了两者的实际区别,那么如何选择也就视情况而定了,但是一般不推荐使用302,因为会有许多风险。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区