http状态码

优雅地使用 301

搞懂 HTTP 重定向 - 如何优雅地使用 301

浏览器收到 301永久重定向 后,认为这是一个可以缓存的资源,下次请求该链接是就不再向服务器发起请求。

  1. 用户端的解决方案:

    既然是缓存行为,那么我们就可以通过常规的缓存清理方式来处理,包括但不限于以下几种方式:

    • 控制台禁用缓存
    • 清除历史记录
    • Network 面板清除缓存
  2. 服务器端的解决方案(优先选这种方案)

    我们可以通过缓存头来控制。那么在使用 301 时,我们将其设置为不缓存就可以了。比如设置 Cache-Control: no-store 或 Cache-Control: no-cache

    1
    2
    3
    4
    5
    6
    7
    8
    
    # nginx配置
    location /original-page {
    add_header Cache-Control no-store; # 控制缓存头
    # 永久重定向
    rewrite ^/original-page http://redirect.example.com/301 permanent;
    # 临时重定向
    # rewrite ^/original-page http://redirect.example.com/302 redirect;
    }
    

X-Forwarded-Proto

X-Forwarded-Proto(XFP)报头是用于识别协议(HTTP 或 HTTPS),其中使用的客户端连接到代理或负载平衡器一个事实上的标准报头。您的服务器访问日志包含在服务器和负载平衡器之间使用的协议,但不包括客户端和负载平衡器之间使用的协议。要确定客户端和负载平衡器之间使用的协议,X-Forwarded-Proto可以使用请求标头。

此标头的标准化版本是 HTTP Forwarded标头。

示例

1
X-Forwarded-Proto: https

可能引起的报错

1
2
3
4
5
6
7
<html>
<head><title>308 Permanent Redirect</title></head>
<body bgcolor="white">
<center><h1>308 Permanent Redirect</h1></center>
<hr><center>nginx/1.13.8</center>
</body>
</html>