You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:23:04