首页 > 其他分享 >HTTP状态码301和302的区别详解

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

时间:2024-09-11 15:26:07浏览次数:9  
标签:HTTP 重定向 URL 301 302 网址 资源

文章目录

    1、简介
    2、301永久重定向
    3、302临时重定向
    4、为何要重定向?
    5、何时会重定向?
    6、301和302的区别
    7、302的危害/风险

1、简介

HTTP状态码中,301和302都是网页重定向跳转,但是两者的使用场景和效果是不一样的,不认真学习很容易搞混,下面我对自己学习的结果做简单总结。

我们先说301永久重定向。
2、301永久重定向

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

抓取一个301重定向的数据包如下,内容如下:
在这里插入图片描述

    Location字段表示重定向后的资源新位置
    Request URL字段表示请求的资源旧位置

使用Burp抓取,也可以看到Location字段,即重定向后的位置
在这里插入图片描述
对于301重定向的使用没有规定,即使很短时间的更换资源位置信息,也可以使用301重定向。
3、302临时重定向

302状态码是临时重定向(Move Temporarily),表示所请求的资源临时地转移到新的位置,一般是24到48小时以内的转移会用到302。
在这里插入图片描述
对于302的使用是有规范的,只有在资源位置24到48小时内临时转移时,才可以使用302重定向,超过就必须使用301永久重定向。

虽然说短时间的资源位置转移会用到302临时重定向,但是并不提倡使用302,尽量使用301永久重定向, 因为302会有安全隐患,具体见下文。
4、为何要重定向?

在刚学习这部分内容时,就会有这样的疑问:为什么会出现重定向这个操作?

查询得知:

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

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

这就是为什么需要重定向。
5、何时会重定向?

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

    域名更换(旧域名更换为新域名)
    多域名跳转(多个域名跳转至主站,进行引流)
    网站调整(如改变网页目录结构)
    路径改变(如网页被移到一个新地址)
    网页扩展名改变(如应用需要把.php改成.html或.shtml)

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

通过上文已知,301和302都是重定向,但是有临时和永久的区别,可具体的区别呢?如何选择301或302?

对于区别,百科是这样解释的:

    302重定向是暂时的重定向,搜索引擎会抓取新的内容而保存旧的网址。由于效劳器前往302代码,搜索引擎以为新的网址只是暂时的。
    301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址。

根据上述以及查询实践,我的理解是:

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

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

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

    在301重定向结束后,如果只删除重定向相关代码,客户端的URL缓存是不会改变的,因此用户点击收藏夹时,就会访问之前301时新的URL,但是该路径已经被删除换为旧的路径,因此用户得到的只会是404。

    此时要想让用户可以正常访问,可通过以下几种方式:
        服务端再次301重定向,将改变后的地址重定向到原地址,这样更新了URL的用户再次点击时就会重新更新回原地址;
        客户端清理浏览器缓存,这样就会把更新了的URL清除掉,点击收藏夹依然是旧的URL。

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

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

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

302的风险大致有以下几种:

    URL劫持
    从网址A做一个302重定向到网址B时,主机服务器的隐含意思是网址A随时有可能改主意,重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302重定向时,一般只要去抓取目标网址就可以了,也就是说网址B。如果搜索引擎在遇到302转向时,百分之百的都抓取目标网址B的话,就不用担心网址URL劫持了。问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。比如说,有的时候A网址很短,但是它做了一个302重定向到B网址,而B网址是一个很长的乱七八糟的URL网址,甚至还有可能包含一些问号之类的参数。很自然的,A网址更加用户友好,而B网址既难看,又不能用户友好。这时Google很有可能会仍然显示网址A。由于搜索引擎排名算法只是程序而不是人,在遇到302重定向的时候,并不能像人一样的去准确判定哪一个网址更适当,这就造成了网址URL劫持的可能性。也就是说,一个不道德的人在他自己的网址A做一个302重定向到你的网址B,出于某种原因,Google搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B上的内容,这种情况就叫做网址URL劫持。你辛辛苦苦所写的内容就这样被别人偷走了。302重定向所造成的网址URL 劫持现象,已经存在一段时间了。不过到目前为止,似乎也没有什么更好的解决方法。在谷歌曾进行的Big Daddy数据中心转换中,302重定向问题也是要被解决的目标之一。从一些搜索结果来看,网址劫持现象有所改善,但是并没有完全解决。
    网站降权
    由于使用302跳转导致搜索引擎认为是非法引用,来干扰搜索结果,所以会进行降权惩罚。

对于301和302的学习暂时到此。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_43968080/article/details/107355758

标签:HTTP,重定向,URL,301,302,网址,资源
From: https://www.cnblogs.com/gaoyanbing/p/18408300

相关文章

  • Java服务端开发中的请求优化:从HTTP/1.1到HTTP/2与gRPC的升级
    Java服务端开发中的请求优化:从HTTP/1.1到HTTP/2与gRPC的升级大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代Java服务端开发中,提升请求性能是至关重要的。随着HTTP/2和gRPC的引入,优化请求性能变得更加有针对性和高效。本文将探讨如何从HTTP/1.1......
  • fastapi HTTP异常处理
    HTTPException是FastAPI中用于处理HTTP错误的异常类。HTTPException 是一个非常有用的异常类,用于当HTTP请求处理过程中遇到错误时,能够优雅地返回HTTP错误响应给客户端。通过抛出 HTTPException,你可以控制返回给客户端的HTTP状态码和响应体,使得客户端能够根据这些信息作出相应的......
  • COMP3013 Mobile Applications
    COMP3013MobileApplicationsDevelopmentSpring2024Assignment1MenUWSDue:8thSeptember2024(Studentsmustdemonstratetheirassignmentsatthetutorialtimeinweek9).AssignmentDetailsForthisassignment,youarerequiredtocreateasimple......
  • HTTPS执行过程
    HTTPS(超文本传输安全协议)是HTTP(超文本传输协议)的安全版本,它使用SSL/TLS协议来加密HTTP通信,从而确保数据的安全传输。下面将详细介绍HTTPS的工作流程:HTTPS的工作流程客户端发起请求:用户在浏览器中输入一个HTTPSURL(如https://example.com)。浏览器向服务器发送一个TCPSYN包......
  • 【待做】【JavaWeb】HTTP、Tomcat、Servlet
    一、JavaWeb框架及HTTP介绍二、IDEA+Tomcat集成快速构建JavaWeb项目2.1快速构建JavaWeb项目2.2IDEA集成本地Tomcat2.3IDEA配置Tomcat的Maven插件2.4项目打包后的目录结构三、Servlet执行流程及生命周期介绍3.1Servlet介绍及写个接口3.2Se......
  • 【学习】为什么许多大型APP会采用RPC而不是HTTP协议呢?
    https://mp.weixin.qq.com/s/JD5qDjYFVn37pAC6W5JuDw原创前端欧巴在回答这个问题之前我们有必要系统性的了解一下RPC是何方神圣。---------------------------------------------------------------------------------------------RPC(RemoteProcedureCall,远程过程调用)是......
  • websocket协议与http协议
    WebSocket协议和HTTP协议都是用于网络通信的协议,但它们在设计目标、通信方式和应用场景上有一些关键的区别。以下是它们的主要区别:1.设计目标HTTP:设计目标:HTTP旨在为万维网提供一种标准化的请求/响应机制,允许客户端和服务器之间进行数据交换。它是无状态的,每个请求都......
  • PFTL301E-0.1KN 张力压头
    PFTL301E0.1KN3BSE019050R100是ABB生产的压磁压头,特别适用于线圈加工行业的卧式Mini系列枕式压头。该产品的设计使其只能测量线圈张力的水平分量,而不是像传统压头那样测量垂直分量和张力辊的重量。这种设计允许压头在测量范围内发挥最佳性能,即使在辊重较大而张力较小的情......
  • docker Get "https://registry-1.docker.io/v2/": x509: certificate is valid for
    前言docker在进行build时,报错:Get"https://registry-1.docker.io/v2/":x509:certificateisvalidfor问题原因:Docker客户端无法验证DockerHub服务器的SSL/TLS证书解决在/etc/docker/daemon.json中新增国内镜像源:"registry-mirrors":["https:/......
  • HTTPS证书如何申请?只需这五个步骤
    在当今互联网+时代,保护用户的敏感数据和隐私变得越来越重要,HTTPS证书可以加密传输数据,有效保护传输数据安全,消除浏览器不安全提示,增加网站的安全性和可信性,由此个人或企业网站都建议部署HTTPS证书。那么我们应该如何申请HTTPS证书呢?在本文中,我们将向您介绍5个简单的步骤,让您轻......