Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 通过'访问XMLHttpRequest;https://login.microsoftonline.com/xxx 来自原点';http://localhost:4200' 已被CORS策略阻止_Angular_Active Directory_Azure Active Directory_Microsoft Graph Api_Msal - Fatal编程技术网

Angular 通过'访问XMLHttpRequest;https://login.microsoftonline.com/xxx 来自原点';http://localhost:4200' 已被CORS策略阻止

Angular 通过'访问XMLHttpRequest;https://login.microsoftonline.com/xxx 来自原点';http://localhost:4200' 已被CORS策略阻止,angular,active-directory,azure-active-directory,microsoft-graph-api,msal,Angular,Active Directory,Azure Active Directory,Microsoft Graph Api,Msal,似乎是一个重复的问题,但无法解决它。我有angular 6应用程序,它使用Msal强制用户登录。成功登录后,我向aad的令牌端点发出请求,传递服务主体凭据(应用程序的应用程序id和客户机机密),以获取访问令牌以访问图api,如前所述。这就是我得到CORS策略错误的地方 当我禁用chrome浏览器安全性时,我没有收到任何CORS错误,并且能够获得访问令牌 为什么只有当我尝试使用服务主体凭据获取访问令牌时,而不是在用户使用msal登录时,才会出现CORS错误 我是否需要在浏览器端有任何脚本才能工作

似乎是一个重复的问题,但无法解决它。我有angular 6应用程序,它使用Msal强制用户登录。成功登录后,我向aad的令牌端点发出请求,传递服务主体凭据(应用程序的应用程序id和客户机机密),以获取访问令牌以访问图api,如前所述。这就是我得到CORS策略错误的地方

当我禁用chrome浏览器安全性时,我没有收到任何CORS错误,并且能够获得访问令牌

为什么只有当我尝试使用服务主体凭据获取访问令牌时,而不是在用户使用msal登录时,才会出现CORS错误

我是否需要在浏览器端有任何脚本才能工作

如何在不影响安全性的情况下实现它

登录权限为:{租户id}/


服务主体的令牌端点是:{tenant id}/oauth2/v2.0/token

通常,传统或常规web页面可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到同源策略的限制。因此,浏览器正在阻止它,因为出于安全原因,它通常允许同一来源的请求。虽然邮递员可以处理此类请求,因为他们不受此策略的限制

为了在javascript中集成Azure Active Directory,建议使用它,这是一个javascript库,用于前端轻松集成Azure Active Directory,通过使用,它还具有消除跨源调用的任何要求的优势,如果JavaScript应用程序需要与令牌端点联系,则这是必需的。你也可以看一看,这是一个讨论同一主题的线程,并展示了关于如何使用MSAL.JS的更多信息,请参考

您还可以在java脚本中看到客户端请求模式。我相信上述过程可能会对您有所帮助

有关更多详细信息,请阅读以下内容:

实施


多谢各位

您是否在azure门户上启用了CORS源策略?您在应用程序中使用的是哪种安全协议?请尝试使用“withCredentials=true”。更多信息:@MdFaridUddinKiron,我正在向azure active directory的令牌端点发送请求。我在服务器端没有控制权。@J.Pinxten with credentials没有work@Saravanan您在客户端使用哪种安全协议?