通过curl 来对比http状态码301和302

2022-09-28 10:04:33 浏览数 (1)

概述

curl

使用命令行工具发送请求,一个 HTTP 请求客户端(实际上它也可以做 FTP/SCP/TELNET 协议的事情)。可类比于浏览器中的 fetch

curl 不加参数直接发送get请求

--head

  • --head 发送 HEAD 请求

--include

打印request Header reponse Body

代码语言:javascript复制
curl https://jsonplaceholder.typicode.com/todos/1 -i

--request

  • 指定请求方法,如 POST 等。

--verbose

  • 查看发送报文及 TLS handshake 的详细信息

--location

  • --location,追踪重定向。
代码语言:javascript复制
# 重定向两次后请求到数据
curl --location http://zhihu.com

# 可使用 --head,查看到三次响应
curl --head --location http://zhihu.com

浏览器请求:http://zhihu.com 会重定向至:https://www.zhihu.com/signin?next=/ 说明肯定发生了重定向

直接curl http://zhihu.com 返回301 也说明发生了重定向 我们详细看下执行curl --head --location http://zhihu.com发生了什么

第一次响应永久重定向 301 重定向至 https://www.zhihu.com

第二次响应暂时重定向302 重定向至https://www.zhihu.com/signin?next=/

第三次响应 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页面会重新定向到首页。

0 人点赞