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

网站会话过期重定向登录页遇CORS预检请求问题,求解决方案

解决会话过期重定向导致的CORS问题

方案1:后端返回401状态码而非302

  • 当检测到用户会话过期时,后端直接返回401 Unauthorized状态码,同时保留必要的CORS响应头(如Access-Control-Allow-Origin、Access-Control-Allow-Credentials等)。
  • 前端在全局请求拦截器中捕获401状态码,主动跳转至登录页面。示例代码(Axios为例):
axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response?.status === 401) {
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

方案2:针对预检请求单独处理

  • 后端接收到OPTIONS预检请求时,直接返回200 OK状态码,配置好所有必需的CORS响应头,不执行重定向逻辑。
  • 针对实际业务请求(GET/POST等),再判断会话状态:跨域请求返回401让前端处理,同域请求正常返回302重定向。

方案3:配置CORS允许重定向(有限场景适用)

  • 部分浏览器支持跨域请求重定向,需后端设置Access-Control-Allow-Origin为具体前端域名,同时添加Access-Control-Allow-Credentials: true;前端请求时携带withCredentials: true。
  • 注意:此方式兼容性有限,若登录页与当前前端不同域,后续仍可能出现CORS问题,不推荐作为核心方案。

关键注意事项

  • 确保CORS响应头配置正确,带凭证的请求中Access-Control-Allow-Origin不能设为*。
  • 禁止在预检请求中返回重定向,浏览器会直接拒绝非2xx状态码的预检响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:43:12