簡體   English   中英

調用 res.redirect 后出現 ERR_TOO_MANY_REDIRECTS

[英]ERR_TOO_MANY_REDIRECTS after calling res.redirect

我有以下代碼將 http 流量重定向到 https 但它給出了 ERR_TOO_MANY_REDIRECTS

任何原因? 我們如何在 node.js 中修復它?

 module.exports = [
    '/',
    (req, res, next) => {
        if (req.hostname !== 'localhost' && req.protocol === 'http') {
            let url = 'https://' + req.headers.host + req.url;
            res.redirect(url);
        } else {
            next();
        }
    },
];

注意:對於服務器上的 https 請求,req.protocol 的值始終返回 http。

我打了 https url 並檢查了 req.protocol 值,它是 http

你可以嘗試調試它,了解以下內容:

  • 你是否在if語句中輸入
  • 如果是,第一次迭代和下一次迭代的 req.protocol 和 req.hostname 的值是多少,看看這些是否是您期望的值

而不是使用 Nodejs 代碼將 HTTP 流量重定向到 HTTPS。 我希望您直接在您的網絡服務器ApacheNginx中配置重定向,如果您的服務器上沒有ApacheNginx訪問權限,您也可以使用 Cloudflare。 而且您還面臨這個問題,因為您可能會多次重定向訪問者。 例如,我認為您已經在通過網絡服務器重定向流量,並且在您再次通過代碼重定向之后。 所以,我希望你刪除這個中間件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM