【问题标题】:Authorization header not working Angular 5授权标头不起作用Angular 5
【发布时间】:2023-04-09 13:32:01
【问题描述】:

我正在使用基于 JWT 的 API。 我正确传递了授权标头(我的意思是在代码中), 使用headers.set('Authorization', 'token'),我使用的是正确的方法,即 GET。

当我为应用程序提供服务(使用 ionic 3)时,出现错误 405(不允许使用方法),但是当我使用 POSTMAN 或将代码 sn-p(从 POSTMAN 生成)粘贴到控制台时,相同的请求有效.

这是工作请求的两个捕获(使用从 POSTMAN 到控制台的代码 sn-p)和不工作的请求(来自 ionic 应用程序)。

顺便说一句,授权有点奇怪,我用红色突出显示。

【问题讨论】:

  • 不是重复的,但可能是相关的:stackoverflow.com/questions/39408413/… 另外,你需要在header前面加上“Bearer”,而不是仅仅使用token。
  • 我正在使用承载
  • 我怀疑这是 CORS 问题,因为您看到的是选项请求。查看上面的链接,看看是否有帮助。
  • 当我使用代码 sn-p form postman 时,它可以工作。 xhr.open( “GET”, “xx.xxx.xx.xx:8080/api/clients"); xhr.setRequestHeader(” 授权”, “承载eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VybmFtZSIsImlzcyI6Im15LWF3ZXNvbWUtd2Vic2l0ZS5jb20iLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE1MjE4MTI5NjN9.n418jsAmjsLNt99GoQIOzKFyK3MaMrWm77ovxJtNNDc”); 跨度>
  • 是的,但浏览器不是邮递员。浏览器不会通过触发您告诉它们的确切请求来工作 - 如果资源不是来自同一来源,那么它必须先通过一个过程来发现它可以对选项请求做什么,然后再进行您想要的实际请求。在您的示例中,它的 options 方法失败了,因此它永远不会发送 GET 请求。请参阅此处了解更多信息:restlet.com/company/blog/2015/12/15/…

标签: http ionic3 angular4-httpclient


【解决方案1】:

如果不是cors问题,可以按照下面的代码试试

const httpOptions = {
        headers: new HttpHeaders()
          .set('Authorization',  'Bearer ' +this.auth_token)
      }


    return this.http.get('http://xxxxxx00x:8080/api/clients',httpOptions);

【讨论】:

    【解决方案2】:

    在顶部屏幕上,您有请求方法 OPTIONS not GET 并且来自服务器的响应是 405 Method not allowed not 401 Unauthorized 或 403 Forbidden。 所以问题不是授权而是请求方法。 看起来像 CORS 问题。

    【讨论】:

      猜你喜欢
      • 2017-12-20
      • 2013-09-24
      • 2018-07-24
      • 1970-01-01
      • 2018-11-03
      • 2019-01-29
      • 2018-07-07
      • 2018-07-26
      • 2016-02-11
      相关资源
      最近更新 更多