auth0 授权 api 调用返回 200 状态但仍然得到错误响应

Posted

技术标签:

【中文标题】auth0 授权 api 调用返回 200 状态但仍然得到错误响应【英文标题】:auth0 authorization api call returns 200 status yet still getting error response 【发布时间】:2020-05-05 13:32:35 【问题描述】:

角度 http 调用:

login()
    const loginstring = 'https://<removed>.auth0.com/authorize?' +
      'response_type=token&' +
      'client_id=<removed>&' +
      'connection=null&' +
      'redirect_uri=<removed>';
    this.http.get(loginstring, observe: 'response').subscribe(
      (req:any)=>
        console.log('this is the http response');
        console.log(req);
      );

  

回复

不使用代码格式化,因为没有它更容易阅读。

错误 HttpErrorResponse headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:4200/", ok: false, ...headers: HttpHeaders normalizedNames: Map(0),lazyUpdate: null,lazyInit :ƒ状态:200statusText:“OK”url:“http://localhost:4200/”ok:falsename:“HttpErrorResponse”消息:“解析http://localhost:4200/时Http失败”错误:错误:SyntaxError:意外的令牌proto:HttpResponseBase

httpclient 默认返回响应的 json,这是我正在积极研究的。但我不确定如何解决这个问题。

【问题讨论】:

【参考方案1】:

如此简单的修复只需将响应类型更改为文本。

const loginstring = 'https://portaltech.auth0.com/authorize?' +
      'response_type=code&' +
      'client_id=MOqNyn7qyRhJdCOv5QHCUGkmjAv6Wied&' +
      'connection=null&' +
      'redirect_uri=http://localhost:4200/';
    this.http.get(loginstring, responseType: 'text', observe:'response').subscribe(
      (req:any)=>
        console.log('this is the http response');
        console.log(req.body);
        this.innerhtml = req.body;

【讨论】:

【参考方案2】:

您会收到200,因为您成功访问了服务器,但有效负载存在问题。 看来您需要发送 JSON,而您发送的内容以 &lt; 开头,而不是 JSON。 您可以使用此站点检查您是否发送了有效的 JSON:https://jsonformatter.curiousconcept.com/

希望对你有帮助。

【讨论】:

以上是关于auth0 授权 api 调用返回 200 状态但仍然得到错误响应的主要内容,如果未能解决你的问题,请参考以下文章

基于策略的授权 - Auth0 身份验证 - 始终返回 Forbidden 403

使用 Auth0 授权来自我们的 SPA 和其他后端服务的 API 请求

使用 Auth0 在 ASP.NET 中按角色/组进行授权

带有 JWT 的 Express API 返回“未经授权:算法无效错误”

请求 Auth0-Authorization 扩展中的组列表但返回 403:Insufficient 范围错误

在 Auth0 中授权后访问令牌