我正在创建一个登录页面,当点击该页面时,会自动触发 Facebook 身份验证流程。但是,我无法自动从索引重定向到signup路由。如何从GET请求重定向到POSTexpress 请求?
router.get('/', function(req, res) {
//redirect to login function
});
router.post('/signup', passport.authenticate('signup', {
//Log user in on facebook
}));
Run Code Online (Sandbox Code Playgroud)
从 GET 请求重定向到 POST 请求是不可能的。
您所能做的就是将 POST 请求重定向到 POST 请求,但即使这样有时也会很棘手,但您永远无法重定向到与原始请求不同的方法(除非该不同的方法是 GET)。
通常您通过发送 301 Moved Permanently 或 302 Found HTTP 状态代码来进行重定向。它们通常在实践中工作,就好像它是 303 See Other 并发出 GET 请求。
有一个 307 临时重定向(自 HTTP/1.1 起)不允许更改 HTTP 方法。这可用于将 POST 重定向到 POST,但请注意,明确不允许更改该方法,因此您不能使用它来将 GET 重定向到 POST(甚至将 POST 重定向到 GET,否则可能使用一个简单的 301 或 302 响应)。
有关更多背景信息,请参阅这些答案: