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

Chrome控制台报ERR_UNSAFE_REDIRECT,如何修复Node.js后端重定向问题?

解决POST请求后ERR_UNSAFE_REDIRECT错误的方案

嘿,我来帮你搞定这个问题!你碰到的ERR_UNSAFE_REDIRECT错误和SSL没有关系,核心是浏览器的安全限制加上你后端重定向的方式不对,下面给你拆解原因和修复方案:

错误原因分析

你后端代码里用res.redirect(__dirname+'/wwwroot/views/profile/dashboard.html'),这个写法会生成一个本地文件路径(类似file:///你的电脑路径/wwwroot/views/profile/dashboard.html)。浏览器当前是通过http://localhost:1000访问的,从HTTP协议跳转到本地文件的file://协议属于跨协议跳转,浏览器出于安全考虑会直接拦截,所以抛出了ERR_UNSAFE_REDIRECT错误。

另外还有一个隐藏问题:你用$.post发起的是异步AJAX请求,就算后端返回的是合法的HTTP重定向,浏览器也不会自动触发页面跳转——AJAX请求的重定向响应只会被回调函数接收,不会直接改变当前页面的URL。

修复方案

方案1:后端用合法的HTTP路径重定向,同时配置静态文件服务

首先确保你已经用Express的静态文件中间件托管了wwwroot目录,这样前端才能通过HTTP访问到里面的静态文件:

// 在你的Express app配置里加上这一行
app.use(express.static(__dirname + '/wwwroot'));

然后修改后端的重定向代码,用相对URL代替本地文件路径:

app.post('/login', function(req, res) {
  console.log(req.body);
  // 用相对路径,浏览器会请求http://localhost:1000/views/profile/dashboard.html
  res.redirect('/views/profile/dashboard.html');
});

不过要注意:因为是AJAX请求,浏览器还是不会自动跳转,所以这个方案需要配合前端修改,或者你改用表单提交(非AJAX)的方式发起登录请求。

方案2:前端处理跳转(更推荐的异步请求做法)

既然用了AJAX请求,更合理的方式是让后端返回登录结果,由前端主动跳转:

  1. 修改后端代码,返回JSON格式的结果:
app.post('/login', function(req, res) {
  console.log(req.body);
  // 假设登录验证成功,返回跳转地址
  res.json({
    success: true,
    redirectUrl: '/views/profile/dashboard.html'
  });
  // 如果登录失败,可以返回success: false和错误信息
  // res.json({success: false, message: '邮箱或密码错误'});
});
  1. 前端在回调函数里处理跳转:
$('#login').click(function() {
  $.post( '/login', {
    mail: encodeURIComponent($('#mail').val()),
    password: encodeURIComponent($('#password').val())
  }, function(result) {
    if(result.success) {
      // 前端主动跳转到目标页面
      window.location.href = result.redirectUrl;
    } else {
      console.log(result.message || '登录失败');
    }
  });
});

这种方式更灵活,也符合AJAX请求的使用逻辑,还能轻松处理登录失败的场景。

总结

  • 不要直接重定向到本地文件路径,要用HTTP协议下的相对URL
  • AJAX请求的重定向不会自动触发页面跳转,最好由前端主动处理跳转

内容的提问来源于stack exchange,提问作者Lukas Gund

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:56:38