使用命令行工具发送请求,一个 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
--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 成功

这里我们看到了请求 http://zhihu.com 返回301 永久重定向
301 301 Moved Permanently 说明请求的资源已经被移动到了由 Location 头部指定的 url 上,是固定的不会再改变。搜索引擎会根据该响应修正。
请求https://www.zhihu.com 返回302 临时重定向
HTTP 302 Found 重定向状态码表明请求的资源被暂时的移动到了由该 HTTP 响应的响应头 Location 指定的 URL 上。浏览器会重定向到这个 URL,但是搜索引擎不会对该资源的链接进行更新
301比较常用的场景是使用域名跳转。
比如未登陆的用户访问用户中心重定向到登录页面。
访问404页面会重新定向到首页。