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

Sails升级至1.5.7后io.socket.get请求出现401未授权问题求助

问题分析与解决方案:Sails 1.5.7中io.socket.get请求失败

问题背景

为修复GHSA-gpw9-fwm8-7rx7漏洞,将Sails从1.5.2升级到1.5.7后,io.socket.get("/api/v1/direc/get-token", {}, gotToken) 请求失败,但切回1.5.6可正常工作。已排查:控制器日志未打印但回调触发,且已升级sails-hook-sockets到2.0.4版本。依赖配置及Node.js v18.17.1见下方。

可能原因及排查/解决步骤

  1. 先抓具体错误信息
    把回调函数改成带错误参数的形式,打印错误详情:

    function gotToken(err, response) {
      console.error('Socket请求错误:', err);
      console.log('响应内容:', response);
    }
    io.socket.get("/api/v1/direc/get-token", {}, gotToken);
    

    回调触发但没走到控制器,大概率是请求在中间件阶段被拦截,错误信息能直接定位问题。

  2. 核对Sails 1.5.7的socket相关变更
    1.5.7针对socket请求可能做了安全或路由匹配的调整:

    • 检查是否新增了socket路径限制,比如默认socket命名空间变更,导致/api/v1前缀的路由无法匹配;
    • 查看是否调整了socket中间件的执行顺序,比如认证中间件(passport)现在会拦截socket请求,而之前版本不会。
  3. 检查Sails socket配置
    打开config/sockets.js(如果没有则新建),确认以下配置:

    module.exports.sockets = {
      allowUpgrades: true,
      transports: ['websocket', 'polling'],
      // 确认是否开启了正确的命名空间或路径匹配
      prefix: '/socket.io',
    };
    

    若路由使用了前缀,需确保socket配置和路由前缀兼容。

  4. 排查第三方hook兼容性

    • sails-hook-sockets可能和Sails 1.5.7存在适配问题,尝试暂时移除该hook,改用Sails内置的socket.io支持(Sails原生集成socket.io,多数场景无需额外hook);
    • 检查其他hook(如sails-hook-pino、passport)是否在socket请求到达控制器前拦截了请求,可临时禁用这些hook测试是否恢复正常,逐步排查。
  5. 最简项目验证
    创建一个全新的Sails 1.5.7项目,只配置/api/v1/direc/get-token路由和对应的socket请求,测试是否能正常工作。如果正常,说明是现有项目中其他依赖或配置冲突导致的问题。

依赖配置参考

"dependencies": {
  "sails": "1.5.7",
  "sails-hook-apianalytics": "2.0.5",
  "sails-hook-organics": "2.2.0",
  "sails-hook-orm": "4.0.1",
  "sails-hook-pino": "1.1.2",
  "sails-hook-sockets": "2.0.4",
  "@sailshq/lodash": "3.10.4",
  "sails-postgresql": "4.0.0",
  "passport": "0.6.0",
  "@techpass/passport-openidconnect": "0.3.2",
  "connect-pg-simple": "7.0.0",
  "crypto": "1.0.1",
  "morgan": "1.10.0",
  "on-headers": "1.0.2",
  "twilio": "3.43.0",
  "@sentry/node": "7.0.0"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:34:59