很简单,我有一个路由器,仅当它用POST调用时才进行重定向。
router.post("/redirect", (req, res) => {
res.redirect("/logged");
})
从客户端页面的XHR / Fetch请求中调用它。
const btnTest = document.querySelector("#js-redirect");
btnTest.addEventListener("click", () => {
fetch("/redirect", {
method: "POST"
});
});
使用Morgan,服务器响应:
POST /redirect 302 9.000 ms - 29
GET /logged 200 2.816 ms - 9
但是在客户端页面上什么都没有发生!
我可以将响应发送到客户端页面,然后进行window.location重定向。但是,它不应该以其他方式起作用吗?
答案 0 :(得分:-1)
使用fetch
时,实际上是在告诉浏览器您将处理响应。浏览器现在不负责您的请求处理,因此不会重定向。
您可以从响应中读取标头并检查状态,查看是否有Location
标头,然后自己进行重定向。