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