【问题标题】:Blazor (client-side) call to API on different domainBlazor(客户端)调用不同域上的 API
【发布时间】:2020-12-26 12:17:29
【问题描述】:

我目前的情况是,我有一个 Blazor WASM(客户端)应用程序通过 Azure API 管理调用 Web API,它位于不同的服务器/域上。我使用 Azure Active Directory B2C 保护了 Blazor 应用程序和 Web API。我还在使用 jwt-validate 在 API Manager 级别进行身份验证。我已经研究了如何将 JWT 令牌从 Blazor 应用程序传递到 API 管理和 Web API(使用 CustomAuthorizationMessageHandler 解决方案),但是在进行 Api 调用时,我发现 Blazor 应用程序出现了奇怪的行为。

当我使用方法Http.GetFromJsonAsyn<MyEntity>("<api manager endpoint>") 进行调用时,GET 请求在 API 管理器中显示为 OPTIONS 请求,因此导致错误(无法将传入请求与操作匹配)。我尝试了多种方法来进行 API GET 调用,但都导致了 OPTIONS 调用。

我无法确定这是 Blazor 问题、CustomAuthorizationMessageHandler 问题还是其他问题。有没有人遇到过这个问题,更重要的是,有没有人解决过这个问题?

【问题讨论】:

    标签: blazor azure-ad-b2c azure-api-management blazor-client-side


    【解决方案1】:

    OPTIONS 调用是一个“飞行前”调用,用于确定该调用是否被允许。

    您似乎没有在 API 服务器上配置 CORS。
    但我本来希望收到更好的关于 CORS 的错误消息。

    the docs

    【讨论】:

    • 这绝对是问题所在。一旦我在 API Manager 和 Web API 中正确设置了 CORS,它就奏效了。
    猜你喜欢
    • 2019-10-09
    • 2019-10-08
    • 2020-12-13
    • 2019-10-03
    • 1970-01-01
    • 2019-10-19
    • 2020-10-27
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多