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

调用/ask接口遇UnauthorizedError:未找到授权令牌的排查咨询

问题解答

一、关于「UnauthorizedError: No authorization token was found」的问题

可能原因

  1. 前端请求参数与语法错误:axios的get方法参数格式是axios.get(url[, config]),你当前把data作为第二个参数传入,第三个才是带headers的配置对象,这会导致headers根本没被正确加载到请求里。另外代码里有明显语法错误:cost data: any = {}应该是const data: any = {},这个错误会直接阻断代码执行,请求大概率没按预期发送。
  2. CORS配置缺失:如果后端没有配置允许前端携带Authorization请求头,浏览器会在预检请求后拦截这个头,导致后端接收不到。
  3. 浏览器或插件拦截:部分隐私插件、代理工具可能会移除自定义请求头;如果本地用了HTTPS但证书不被信任,浏览器也可能限制请求头的携带。

调试方法

  • 先修正前端代码:修复语法错误并调整axios参数格式:
    async handleButtonClicked() {
        const data: any = {};
        const token = await getSignToken();
        console.log(token);
        // get请求的参数放在params中,headers合并到config对象里
        await axios.get("https://localhost:3000/ask", { 
            params: data,
            headers: { Authorization: 'Bearer ' + token },
            withCredentials: true 
        });
    }
    
  • 查看实际请求头:打开浏览器开发者工具的「Network」面板,找到/ask请求,查看「Request Headers」确认Authorization是否存在。不存在则是前端配置问题;存在但后端收不到则检查CORS。
  • 直接测试后端接口:用curl发送请求验证后端逻辑:
    curl -H "Authorization: Bearer YOUR_TOKEN" https://localhost:3000/ask
    
    如果这个请求能正常通过,说明后端没问题,问题出在前端。
  • 检查后端CORS配置:确保后端允许携带Authorization头,比如使用cors中间件时设置allowedHeaders: ['Authorization'],同时开启credentials: true(和前端withCredentials对应)。

二、关于JWT_SECRET_KEY的疑问

  1. 密钥的重要性:非常重要。JWT的签名与验证完全依赖这个密钥,一旦泄露,攻击者可以伪造任意合法的JWT token,直接绕过认证访问接口。生产环境必须使用复杂、随机的字符串,绝对不能泄露。
  2. 是否导致本次错误:不会。本次错误是后端根本没找到Authorization头里的token,还没到验证JWT签名的环节,和密钥无关。
  3. 本地与生产环境是否需要一致:不需要。只要同一环境内,生成JWT的地方(比如登录接口)和验证JWT的地方(比如auth中间件)使用相同密钥即可。本地可以用简单密钥(如dev_secret),生产用独立的复杂密钥,两者隔离更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:35:12