Blazor客户端在不同域上对API的调用

问题描述

我目前的情况是,我有一个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问题还是其他原因,我无法解决。以前有没有人遇到过这个问题,更重要的是,有没有人解决过这个问题?

解决方法

OPTIONS呼叫是“飞行前”呼叫,用于确定是否允许该呼叫。

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

请参见the docs