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

React+Node/Sequelize项目本地请求后端报426错误求助

排查React+Node/Sequelize项目426 Upgrade Required错误方案

426错误核心是服务器要求客户端升级请求协议,并非仅与WebSocket绑定,以下是针对性排查步骤:

1. 检查后端HTTP版本强制配置

  • 排查Node后端是否存在中间件(如helmet或自定义逻辑)强制要求HTTP/2或特定协议版本,部分旧项目会通过校验拒绝HTTP/1.1请求。
  • 搜索后端代码中是否有类似判断逻辑:
    if (req.httpVersion !== '2.0') {
      res.writeHead(426, {'Upgrade': 'HTTP/2.0'});
      res.end('Upgrade Required');
    }
    

2. 验证前后端请求协议匹配性

  • 确认前端API请求的协议(http:///https://)与后端服务启动的协议一致,若后端强制HTTPS/HTTP2但前端用HTTP请求,会触发426错误。
  • 检查前端请求的baseURL配置是否正确,避免协议或端口不匹配。

3. 排查本地代理/反向代理配置

  • 若使用代理工具(如nginx、create-react-app的proxy字段),检查代理是否添加了协议升级相关限制,或强制要求特定协议。
  • 核对package.json中proxy字段的配置,确保无额外协议校验规则。

4. 检查Sequelize相关请求拦截逻辑

  • 部分旧项目会在Sequelize钩子或全局请求拦截器中添加协议校验,排查models/index.js或后端全局中间件中是否存在相关逻辑。

5. 直接测试后端接口

  • 用Postman或curl直接请求后端接口(如curl http://localhost:3001/api/your-target-data):
    • 若直接请求也返回426,问题出在后端本身;
    • 若直接请求正常,说明是前端请求配置问题(如请求头、协议设置错误)。

6. 清理浏览器缓存与异常请求头

  • 清空浏览器缓存后重新发起请求,或在前端请求中添加Cache-Control: no-cache头,避免缓存的旧协议要求影响。
  • 检查前端请求是否误携带Upgrade: websocket等异常头,导致后端误解请求类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:15:05