当从AJAX调用客户端调用带有授权属性的.net核心控制器动作时,会发生CORS问题:



CORS问题与Ajax

当从AJAX调用客户端调用带有Authorize属性的。net核心控制器动作时,会发生CORS问题:

错误:

访问'https://login.microsoftonline.com/..........'的XMLHttpRequest(从'https://localhost:44352/home/getdata?id=1 '重定向)来自原点'https://localhost:44352'已被CORS策略阻止:对预飞行请求的响应未通过访问控制检查:请求的资源上没有'Access-Control-Allow-Origin'标头。

这只针对AJAX请求。

根据提供的信息可能不完整的答案:

如果对asp.net Core后端控制器进行的第一次授权调用是通过非交互式AJAX调用,并且在用户的浏览器中没有任何先前直接加载授权资源(甚至通过iframe或其他东西),则调用失败,因为用户没有被提示以交互方式完成授权流。

您可以尝试添加基本的"/login"端点上有一个授权标记,并返回简单的OkNoContent响应。

[HttpGet("login")]
[Authorize]
public IActionResult Login()
{
return Ok("logged in");
}

在尝试通过AJAX访问数据端点之前,您的UI客户端需要将用户导航到该页面-可以是iframe, pop-up, modal,等等。这应该允许浏览器首先通过AAD完成授权流,之后将授权后续的AJAX调用(直到会话到期)。

最新更新