当前栏目
HTTP 状态码 301 与 302 的区别
301 和 302 有啥区别
301 Moved Permanently,永久重定向。被请求资源已永久移动到新位置,并且将来任何对该资源的引用都使用本响应返回的若干个 URI 之一。301 资源除非额外指定,否则都是可缓存的。
注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个 301 响应的话,接下来的重定向请求将会变成 GET 方式。
302 Found 表示临时重定向 Moved Temporarily。由于这样的重定向是临时的,客户端应继续向原有地址发送以后的请求,只有在 Cache-Control 或 Expires 中进行了指定的情况下,这个响应才是可缓存的。
注意:虽然 RFC1945 和 RFC 2068 规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将 302 响应视作为 303 响应,并且使用 GET 方式访问在 Location 中规定的 URI,而无视原先请求的方法。因此状态码 303 和 307 被添加了进来,用以明确服务器期待客户端进行何种反应。
301 和 302 相同点
- 都表示资源重定向。
- 新的 URI 地址都是在响应的 Location 中返回。
- 如果原始请求不是 GET 或者 HEAD 请求的话,浏览器会禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。
301 Moved Permanently
来看一个常见的 301 状态码的演示。访问本网页的时候,由于使用 https 协议,并且设置 http 自动重定向到 https,所以假如直接使用 http 协议http://lz5z.com进行访问,会有一次 301 重定向。
浏览器获得响应结果后,根据 Location 中的值进行重定向,打开页面 https://lz5z.com。
302 Found
我们常用的短链接就是 302 跳转,比如我使用 sina 的短链接服务生成本页面的地址: http://t.cn/RdC6GHq。对其进行访问的时候就首先发生了 302 重定向。
使用时机
由于 301 重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。302 重定向是临时的重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回 302 代码,搜索引擎认为新的网址只是暂时的。
所以 301 是对搜索引擎更加友好的重定向,建议只要不是资源临时转移,都可以使用 301 的方式。
参考资源
相关文章
- Lyft设计总监:移动端响应式设计的高效方法
- 快速提升 UI 设计效果的 6 个小技巧
- H5 移动端调试全攻略
- 如何打造一个优秀的C端组件库?来看贝壳设计的实战案例!
- 帮 UI 设计师极大提升效率的10款 Figma 插件
- iOS 15细节曝光:锁屏UI迎全新外观、还有健康功能
- 大厂分析!UI、交互和产品经理三个岗位的优势和困境
- 10个实现炫酷UI设计效果的CSS生成工具
- Web安全测试必须注意的五个方面
- 《Angular从零到一》导读
- Clojure世界:XML处理
- Ambari 架构(一)Ambari 介绍
- Markdown+Pandoc→HTML幻灯片速成
- 《Flink官方文档》Batch Examples(二)
- 《Spring Boot官方文档》18. 使用 @SpringBootApplication注解
- Spring Boot 集成 FreeMarker 详解案例
- 《Spring Boot官方文档》16. 自动配置
- 《OSGI官方指南》首页
- 《Log4j 2官方文档》 Configuration Syntax
- 当前最火的web开发技术