Express.js中重定向后浏览器未渲染HTML页面的问题求助
Express.js中重定向后浏览器未渲染HTML页面的问题求助
大家好,我最近在做Express项目的注销功能时遇到了一个奇怪的问题,想请各位帮忙排查一下:
后端路由代码
我写的认证路由逻辑如下:
const express = require('express'); const auth = express.Router(); auth.get('/login', async (req, res) => { res.render('login') }) auth.get('/register', async (req, res) => { res.render('register') }) auth.post('/logout', async (req, res) => { res.clearCookie("token") res.redirect("/auth/login") }); module.exports = auth
这段代码的预期逻辑是:当收到/auth/logout的POST请求时,删除名为token的cookie,然后重定向到/auth/login登录页面。
前端注销按钮的事件监听函数
前端绑定logout按钮的处理函数是这样的:
async function logout() { fetch('/auth/logout', { method: 'POST', credentials: 'include' // 确保请求带上cookie }) .then(response => { console.log(`Response status: ${response.status} ${response.statusText}`); if (response.ok) { console.log("everything was ok") } else { console.error('Logout failed'); } }) .catch(error => console.error('Error:', error)); }
问题现象
点击logout按钮后,我在浏览器网络面板里观察到这些情况:
- POST
/auth/logout请求正常返回,响应头里确实有指向auth/login的Location字段 - 浏览器自动发起了GET
/auth/login的请求,状态码是200,返回内容也确实是login.ejs渲染后的HTML - 查看页面源码已经变成了登录页的内容,但浏览器就是不渲染这个新页面,始终停留在原来的页面
我已经试过清除浏览器缓存,而且在Chrome和Firefox里测试都是同样的情况,整个过程控制台没有任何报错信息,/auth/login端点也确实能正常渲染login.ejs文件。
有没有朋友遇到过类似的问题?或者能帮我看看哪里的逻辑出问题了吗?
备注:内容来源于stack exchange,提问作者mehdi
相关产品推荐
相关产品推荐

