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 请求的重定向。