問題描述
配置了阿里雲CDN或者全站加速後,使用瀏覽器進行訪問,出現如下錯誤提示。
XXX.XXX.XXX 將您重定向的次數過多。
嘗試清除 Cookie.
ERR_TOO_MANY_REDIRECTS
問題原因
源站開啟了HTTP重定向至HTTPS的功能,並且CDN控制檯上配置的回源端口為80。在這種情況下,由於CDN回源端口為80,客戶端無論是通過HTTP還是HTTPS訪問CDN加速域名時,CDN在回源的時候都是使用HTTP請求源站,此時會觸發源站的HTTPS強制跳轉邏輯,然後源站會要求CDN重新發送一個HTTPS的請求,但是CDN回源的時候仍然會發送HTTP回源請求,然後再進行跳轉,以此類推,就會出現反覆重定向問題,最終導致出現報錯。
分析過程
1.打開瀏覽器的開發者模式,切換至Network標籤頁,然後重新訪問源站,發現出現無限301重定向的情況。
2.使用HTTP協議訪問源站域名進行測試,確認源站開啟了HTTP重定向至HTTPS的功能,並且確認CDN控制檯上配置的回源端口為80。
解決方法
本文介紹如下三種解決方法,請根據實際情況選擇具體的方法。
方法一
登錄CDN控制檯,在域名管理頁面單擊目標域名對應的管理,然後單擊 修改配置,將CDN的回源端口設置為443,並單擊 確定。設置為443端口以後,CDN回源時會以HTTPS協議請求源站,就不會觸發源站的強制跳轉邏輯。
方法二
將協議跟隨回源設置為“跟隨”。設置為跟隨以後,源站發起HTTPS重定向以後,CDN回源協議跟隨為HTTPS回源。
方法三
如果不希望將CDN的回源端口改成443,仍希望CDN以HTTP協議回源,這種情況下可以考慮關閉源站的HTTP重定向至HTTPS的強制跳轉功能。
特別注意
如果按照上述建議修改配置以後問題還未解決,則可能是301被CDN節點緩存了,需要刷新下CDN的緩存,具體請參考刷新緩存操作。下面是一個異常現象的案例,訪問HTTPS的URL以後,301重定向Location到同樣的HTTPS地址,從Response Headers裡可以看到301被CDN HIT緩存住了。
更多信息
由於使用了CDN,且客戶端的請求都是先請求到CDN節點。如果希望CDN節點獲取客戶端的請求是HTTPS協議時,可以在CDN控制檯上設置HTTP強制跳轉,具體信息請參考配置強制跳轉。
適用於
CDN
全站加速