我在快遞服務器中有以下設定
app.get("/oauth2", (req, res) => {
console.log("PLEASE WORK");
res.redirect(301, "https://google.com/");
});
在對服務器的第一次請求時它作業正常,這意味著“PLEASE WORK”將被記錄并且重定向正常作業并進入谷歌,但如果我在 oauth2 再次請求服務器,“PLEASE HELP”不會被記錄但它仍然重定向到谷歌,如果我將網址更改為“facebook.com”,它仍然會重定向到谷歌。如果我完全洗掉代碼并保存檔案,即使代碼不存在,它仍會重定向到谷歌。瀏覽器會快取嗎?我試過重啟服務器,重啟瀏覽器,我不明白。我也嘗試過使用http服務器
res.writeHead(308, {Location:"https://facebook.com/"});
res.end();
完全相同的事情發生。
uj5u.com熱心網友回復:
為什么從 nodejs 服務器重定向僅適用于第一個請求?
實際上,您問題的標題并沒有真正描述會發生什么。第二次重定向作業正常(客戶端成功重定向到資源的新位置)。您真正要問的是為什么請求第二次沒有命中您的服務器。
301 狀態的全部原因是資源已“永久移動”。因此,客戶端無需再次檢查服務器就可以記住或快取它。
302 重定向更多地被認為是臨時重定向,客戶端不能假設原始 URL 將始終重定向到該新目標,因此如果以后需要該資源,客戶端應重新請求原始 URL。
308 類似于 301(永久重定向)。我不知道 308 的完整歷史記錄,但似乎添加它是為了解決 301 的一些問題,有時 POST 到 301 會重定向到 GET 到新資源位置,而 308 保留 HTTP 動詞在進行重定向時。有關此細微差別的更多資訊,請點擊此處HTTP 301 和 308 狀態代碼有什么區別?.
所以,是的,您的瀏覽器顯然正在快取 301 和 308 的結果,并且允許這樣做。
而且,如果重定向位置會發生變化(改用 302),您的服務器不應該使用 301 或 308 http 狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/452968.html
下一篇:根據url查詢引數創建嵌套結構
