res.redirect()
將請求的使用者代理重新導向至指定的絕對或相對 URL。
return res.redirect(url);
或
return res.redirect(statusCode, url);
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | statusCode | 一個可選的狀態碼 (例如 301)。 (若省略,則預設為狀態碼 302。) | |
2 | url | URL 表達式 (完整規範請見下方)。 例如: "http://google.com" 或 "/login" |
Sails/Express 支援幾種重新導向的形式
return res.redirect('http://google.com');
/checkout
將會將您導向至 http://example.com/checkoutreturn res.redirect('/checkout');
return res.redirect('..');
/
)return res.redirect('back');
- 此方法為終端方法,表示它通常是您的應用程式針對給定請求應執行的最後一行程式碼 (因此在整個文件中建議使用
return
)。- 從 Sails v1.x 開始,對於 HTTP 請求,
res.redirect()
不遵循res.status()
建立的狀態碼。 感謝 @Guillaume-Duval 和 @oshatrk!- 當您的應用程式呼叫
res.redirect()
時,Sails 會傳送狀態碼 302 的回應,表示暫時重新導向。 這會指示使用者代理傳送新的請求至指定的 URL。 沒有辦法強制使用者代理遵循重新導向,但大多數用戶端都會正常運作。- 一般來說,如果請求「想要 JSON」(即
req.wantsJSON
),您應該不需要使用res.redirect()
。- 如果請求源自 Sails socket 用戶端,它總是「想要 JSON」,因此 Sails socket 用戶端 不會遵循重新導向。 因此,如果透過 WebSocket 請求呼叫動作 (例如使用
io.socket.get()
),它只會收到適當的狀態碼和指示所需資源位置的 "Location" 標頭。 用戶端程式碼必須自行決定如何處理 WebSocket 請求的重新導向。