CloudFlare 造成重定向次数过多问题是一个常见的网络问题,以下是对该问题的详细分析及解决方法总结:
一、问题产生原因
当网站开启 CloudFlare 服务后,用户访问网站实际是先访问离用户较近的 Cloudflare 服务器,然后 Cloudflare 再代理用户请求源服务器。而造成循环重定向错误的原因在于回源过程中的 http 和 https 之间的重定向。具体来说,在 Cloudflare 中开启 SSL 后,出现循环重定向需满足以下两个条件:
- SSL 中设置了 Flexible,CDN 以 HTTP 协议回源网站。
- 源网站支持 HTTPS,并且设置了通过 HTTP 协议访问时,自动跳转到 HTTPS 协议。
这样就形成了一个循环:用户通过 HTTPS 访问 Cloudflare 的 CDN 服务器,CDN 以 HTTP 访问源网站,源网站又自动将 HTTP 跳转至 HTTPS。重定向次数过多后,浏览器就会报出 ERR_TOO_MANY_REDIRECTS 的错误。
二、解决办法
- 在 Cloudflare 的 SSL/TLS 菜单里将「SSL/TLS 加密模式」设置为完全(Strict)即 Full (strict)或者 Full (strict),让 CDN 回源的时候使用 HTTPS 的方式回源,避免 HTTP 参与其中,从而消除循环重定向的可能。
- 源网站不设置 HTTPS 支持或者不设置 HTTP 跳转 HTTPS,让 Cloudflare 回源的时候使用 HTTP 方式获取资源。
需要注意的是,修改了 CloudFlare 设置后,可能需要过几分钟或清理浏览器缓存后才能生效。
三、其他 CDN 提供商的类似问题
使用其他 CDN 提供商的时候,也可能会出现这个问题。如果设置了 CDN 后,遇到 Chrome 报重定向次数过多的问题,可以通过上述思路查找问题。
总之,遇到 CloudFlare 造成重定向的次数过多问题时,可根据具体情况选择合适的解决方法,以确保网站的正常访问。