通过curl 来对比http状态码301和302
概述
curl
使用命令行工具发送请求,一个 HTTP 请求客户端(实际上它也可以做 FTP/SCP/TELNET 协议的事情)。可类比于浏览器中的 fetch
curl 不加参数直接发送get请求
--head
--head
发送 HEAD 请求
--include
打印request Header reponse Body
curl https://jsonplaceholder.typicode.com/todos/1 -i
--request
- 指定请求方法,如
POST
等。
--verbose
- 查看发送报文及 TLS handshake 的详细信息
--location
--location
,追踪重定向。
# 重定向两次后请求到数据
curl --location http://zhihu.com
# 可使用 --head,查看到三次响应
curl --head --location http://zhihu.com
浏览器请求:http://zhihu.com
会重定向至:https://www.zhihu.com/signin?next=%2F
说明肯定发生了重定向
直接curl http://zhihu.com
返回301 也说明发生了重定向 我们详细看下执行curl --head --location http://zhihu.com
发生了什么
第一次响应永久重定向 301 重定向至 https://www.zhihu.com
第二次响应暂时重定向302 重定向至https://www.zhihu.com/signin?next=%2F
第三次响应 200 成功
301 & 302
这里我们看到了请求 http://zhihu.com
返回301 永久重定向
301 301 Moved Permanently
说明请求的资源已经被移动到了由 Location
头部指定的 url 上,是固定的不会再改变。搜索引擎会根据该响应修正。
请求https://www.zhihu.com
返回302 临时重定向
HTTP 302 Found
重定向状态码表明请求的资源被暂时的移动到了由该 HTTP 响应的响应头 Location
指定的 URL 上。浏览器会重定向到这个 URL,但是搜索引擎不会对该资源的链接进行更新
适用场景
301适合永久重定向
301比较常用的场景是使用域名跳转。
302用来做临时跳转
比如未登陆的用户访问用户中心重定向到登录页面。
访问404页面会重新定向到首页。
相关文章
- Vue3开发实战02-vue项目添加状态管理Vuex,路由router,以及http请求a
- Go HTTP 编程 | 01 - 使用 http 包创建 Web 服务器
- Http常见的状态码
- 字节一面:HTTP 常见的状态码有哪些?
- python设置时间过期改变状态_Python Redis设置过期时间「建议收藏」
- HTTP 状态码详解
- React学习笔记(四)—— 组件通信与状态管理、Hooks、Redux、Mobe
- http 301、304状态码详解程序员
- MySQL Status Max_execution_time_exceeded 数据库状态作用意思及如何正确
- 服务器一步步教你搭建Linux HTTP服务器(linux搭建http)
- 服务 Linux下检测HTTP服务的方法(linux测试http)
- 服务器Linux下简易配置HTTP服务器(linux配置http)
- 详解:http状态码301和302详解及区别
- MySQL连接状态分析(mysql连接状态)
- HTTP 状态消息
- 一步之遥从HTTP访问Oracle数据库(http访问oracle)
- 状态分布式Redis管理全球状态实现数据一致性(分布式redis维护全局)
- HTTP 状态码有哪些?该怎么用?
- 深入HTTP响应状态码速查表的详解
- HTTP状态代码及其定义解析Ajax捕捉回调错误参考
- 各类Http请求状态(status)及其含义详细解析