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

访问Hyperledger Composer setDefault API时遇401未授权错误求助

排查Angular4调用/wallet/{name}/setDefault接口401 Unauthorized问题

结合你描述的情况——同项目下其他API(ping、wallet/import等)都能正常调用,唯独这个setDefault接口返回401,我梳理了几个最可能的原因和对应的解决思路:

  • 请求参数传递错误(最可能)
    Angular的HttpClient.post方法参数顺序很关键:第一个是请求URL,第二个是请求体(body),第三个才是请求配置选项(options)。你当前的代码把{withCredentials:true}放在了第二个参数的位置,这会导致这个配置根本没生效,请求没带上认证所需的Cookie,自然返回401。而其他正常的API应该是正确传递了options(比如GET请求的第二个参数就是options)。
    修正后的代码应该是这样的:

    this.http$.post(`${url}/api/wallet/${a.name}/setDefault`, {}, {withCredentials:true})
      .subscribe(res => console.log(res));
    

    如果这个接口确实不需要请求体,第二个参数传空对象即可,把withCredentials放在第三个参数的配置项里。

  • 后端接口权限/方法配置异常
    有可能后端对setDefault接口的权限校验规则和其他接口不一样,比如要求更高的权限等级,或者路由配置时漏掉了该接口的认证放行逻辑。另外也可以检查下后端是否期望这个接口用PUT方法而不是POST?如果后端定义的是PUT,你用POST调用也可能触发权限相关的错误。

  • 路径变量格式问题
    看看a.name的值是否包含URL需要转义的特殊字符(比如空格、中文、&等),导致实际请求的URL格式错误,后端无法匹配到正确的接口,返回的401可能是一个误导性的错误。你可以打开浏览器开发者工具的Network标签,查看这个请求的实际URL,对比其他正常请求的路径格式是否一致。

  • 认证凭证时效性问题(概率较低)
    虽然其他接口正常,但也不排除调用setDefault时,认证凭证刚好过期的情况。可以尝试刷新页面后重新触发这个接口调用,看看是否还是返回401。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:38:53