【问题标题】:200 status Postman request, but 401 when requesting from the browser200状态邮递员请求,但从浏览器请求时为401
【发布时间】:2020-08-24 04:53:13
【问题描述】:

我的 API 调用(Asp.Net WebAPI 和 Angular)有一个令人沮丧的问题。我使用不记名令牌授权来授权请求​​。当我从 Postman 向 API 发出请求时,它返回 200 Ok 但是当我从浏览器(Angular)尝试它时,我得到 401 Unauthorized。

如果我在控制器操作之上使用[AllowAnonymous] 属性,我可以让它工作,但出于安全原因,我想保留[Authorize] 属性。

我不确定是什么导致了这个错误。 这是来自浏览器的请求标头的屏幕截图。如您所见,它还包括有效的不记名令牌。有趣的是 Authorize 属性适用于我的控制器中的其他操作。

https://i.stack.imgur.com/K5OB1.png

提前谢谢你。

【问题讨论】:

  • 是 webapp 请求附带的令牌吗?检查 chrome 调试器中的网络选项卡
  • 401 基本上意味着服务器在请求标头中期待一个授权字段并且无法看到一个或提供的授权详细信息不正确。在 Postman 上验证是否有随请求一起发送的任何授权字段,并相应地为浏览器更正它。
  • 是的,不记名令牌包含在标头中我已经放了请求标头的屏幕截图。我只是尝试从客户端生成一个令牌并在邮递员中使用生成的令牌,我收到 401 错误。但是当我从邮递员那里生成一个令牌时,我可以获得 200 ok 状态
  • 另外,当我在 Azure 应用服务中发布 Web API 时,它可以工作。
  • @Volvo 这听起来确实像浏览器问题。您在其他浏览器和/或隐身模式下是否也遇到同样的情况?

标签: angular asp.net-web-api authorization postman bearer-token


【解决方案1】:

我正在回答我自己的问题,因为我找到了发生此问题的原因。我向 Azure App Service 上发布的 API 发出令牌请求,并尝试在我的 localhost API 中使用该令牌。不知何故,这导致了这个问题。当我通过邮递员向 localhost API 发出请求时,我使用从 localhost API 收到的令牌。所以使用 localhost API 中的令牌可以解决这个问题。

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 2020-04-22
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2021-05-24
    • 2020-05-18
    • 2017-06-17
    • 2022-01-22
    相关资源
    最近更新 更多