علائم و نشانهها
- هنگام باز نمودن سایت، با خطای ERR_TOO_MANY_REDIRECTS در مرورگر مواجه میشوید.
- متن پیغام:
... redirected you too many times. Try clearing your cookies. ERR_TOO_MANY_REDIRECTS ===== The page isn’t redirecting properly Firefox has detected that the server is redirecting the request for this address in a way that will never complete. This problem can sometimes be caused by disabling or refusing to accept cookies.
راهحل سریع پیشنهادی
- احتمال دارد تنظیمات HTTPS شما درست تنظیم نشده باشد.
- در پنل به بخش تنظیمات HTTPS مراجعه نمایید.
- اگر حالت اتصال به سرور مبدا (origin) بر روی HTTP صرف قرار دارد تغییر زیر را اعمال کنید:
- را بر روی حالت «خودکار» یا «both» قرار دهید و تست نمایید.
- اگر مساله برطرف نشد، مشکل از سمت سرور مبدا است:
- ابتدا تست کنید که با حذف کلیه کوکیها و کش مرورگر، مساله برطرف میشود یا خیر. (میتوانید از حالت Incognito مرورگر استفاده نمایید)
- تنظیمات سیستم خود را تغییر دهید تا مستقیما به سرور مبدا وصل شوید. (بدون CDN)
- سناریو را تست نمایید.
علت مساله
این خطا زمانی رخ میدهد که یک صفجه مرتبا به خودش ریدایرکت میشود، یا اینکه چند صفحه در یک حلقه بسته مرتبا به یکدیگر ریدایرکت میشوند.
این مساله اصولا مربوط به سامانه وبسایت شماست و ربطی به CDN ندارد. اما در یک سناریو، ممکن است به علت تنظیمات نادرست HTTPS رخ دهد:
- فرض کنید سرور مبدا شما، تنظیم شده است که ارتباطات HTTP را به HTTPS ریدایرکت نماید. لذا محتوا صرفا به صورت امن (HTTPS) ارائه میگردد و اگر کلاینتی به صورت ناامن (HTTP) به سایت شما وصل شود به صورت خودکار به نسخه امن هدایت خواهد شد.
- علاوه بر آن فرض کنید که تنظیمات HTTPS شما در کلودگارد جهت ارتباط با سرور مبدا، بر روی HTTP قرار دارد.
- در این حالت اگر کلاینتی به صورت HTTP به سایت متصل شود، مانند قبل به HTTPS هدایت خواهد شد که این اتفاق صحیح است.
- اما در ارتباط بعدی که با HTTPS خواهد بود، به واسطه تنظیمات انجام شده، CDN کلودگارد جهت دریافت اطلاعات از سرور مبدا باز هم به صورت HTTP اقدام میکند.
- سرور مبدا که با یک درخواست HTTP مواجه شده است، یک پاسخ ریدایرکت به HTTPS را ارسال میکند.
- همین پاسخ توسط CDN به کلاینت منتقل میشود که منجر میشود کلاینت مجددا به همین صحفه ریدایرکت شود.
- نتیجه اینکه کلاینت در یک حلقه ریدایرکت قرار میگیرد.
در این سناریو باید ارتباط با سرور مبدا را روی HTTPS یا روی حالت خودکار (Both) قرار دهید و از حالت HTTP پرهیز کنید.