在 CloudFlare 的 SSL/TLS 菜单里将「SSL/TLS 加密模式」设置为完全(Strict)即可。
区别:
- Off 就是不启用 SSL,通过 HTTP 协议访问网站
- Flexible:当我们的源网站没有配置 HTTPS 支持时,启用这个选项,Cloudflare 会在回源的时候通过 HTTP 协议访问我们的网站。
- Full:当我们的源网站支持 HTTPS,但是 HTTPS 证书和域名不匹配或者是自签名证书时,Cloudflare 会通过 HTTPS 协议访问源网站,但不会验证证书,也就是说,即使我们的源网站提供的 HTTPS 证书不受浏览器信任,Cloudflare 也会通过 HTTPS 回源网站。
- Full (strict):当我们的源网站支持 HTTP ,并且证书有效时 (未过期且受信任)。Cloudflare 会通过 HTTPS 协议访问源网站,并在每个请求过程中验证证书。
问题复现
如果源站开启了Https,并且设置了强制https的话,就会出现这个问题。
是因为我们访问 Cloudflare 的 CDN 服务器的时候,是通过 HTTPS 访问的,CDN 访问源网站的时候,是通过 HTTP 访问的,源网站上 HTTP 又自动跳转了 HTTPS,完美的一个循环重定向。重定向的次数多了,浏览器就报出了 ERR_TOO_MANY_REDIRECTS 的错误。