概述
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
,追踪重定向。
# 重定向两次后请求到数据
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页面会重新定向到首页。