Javascript 否';访问控制允许原点';带有Microsoft Online Auth的标题
我试图使用MicrosoftGraphOAuth端点发出一个简单的请求来获取访问令牌。当我发送下面的简单请求时,我得到 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“localhost:8080/myapprunninglocal”。*Javascript 否';访问控制允许原点';带有Microsoft Online Auth的标题,javascript,cors,microsoft-graph-api,Javascript,Cors,Microsoft Graph Api,我试图使用MicrosoftGraphOAuth端点发出一个简单的请求来获取访问令牌。当我发送下面的简单请求时,我得到 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“localhost:8080/myapprunninglocal”。* var xhttp=new-XMLHttpRequest(); xhttp.open(“GET”https://login.microsoftonline.com/common/oauth2/authori
var xhttp=new-XMLHttpRequest();
xhttp.open(“GET”https://login.microsoftonline.com/common/oauth2/authorize?client_id=&scope=wl.signin%20wl.calendars_update&response_type=token&redirect_uri=localhost:8080/myapprunninglocally“,对);
xhttp.send();
我还使用Microsoft Azure Directory注册了此应用程序,请求了所有权限,并使用了委托的客户端id
我已经阅读了CORS,我知道跨源策略。但是,我知道有一些API公开端点,这些端点在其响应头中包含了
“Access-Control-Allow-Origin”
。有人能帮忙吗?您将无法从客户端运行该策略。CORS设置的一部分要求microsoftonline.com将您的域添加到其CORS支持的白名单中
我建议您在服务器上调用一个服务,然后将请求服务器发送到服务器。要将AAD集成到javascript中,我们建议您使用javascript中的库,以便前端轻松集成AAD 在使用ADAL for JS之前,我们需要注意两个选项:
- 根据位于以下位置的节点: 注意:此示例在Internet Explorer中不起作用。请使用其他浏览器,如Google Chrome。ADAL.js使用iframe为SPA自己的后端以外的资源获取CORS API令牌。这些iframe请求需要访问浏览器的Cookie才能通过Azure Active Directory进行身份验证。遗憾的是,Cookie无法访问当应用程序在localhost中运行时,可以向Internet Explorer发送
- 启用Azure AD应用程序的
。有关详细步骤,请参阅oauth2AllowImplicitFlow
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.14/js/adal.min.js"></script>
<body>
<a href="#" onclick="login();">login</a>
<a href="#" onclick="getToken()">access token</a>
</body>
<script type="text/javascript">
var configOptions = {
tenant: "<tenant_id>", // Optional by default, it sends common
clientId: "<client_id>",
postLogoutRedirectUri: window.location.origin,
}
window.authContext = new AuthenticationContext(configOptions);
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
function getToken(){
authContext.acquireToken("https://graph.microsoft.com",function(error, token){
console.log(error);
console.log(token);
})
}
function login(){
authContext.login();
}
</script>
var配置选项={
租户:,//默认情况下为可选,它发送公共
客户ID:“,
postLogoutRedirectUri:window.location.origin,
}
window.authContext=新的AuthenticationContext(配置选项);
var isCallback=authContext.isCallback(window.location.hash);
authContext.HandleIndowCallback();
函数getToken(){
authContext.acquireToken(“https://graph.microsoft.com,函数(错误,标记){
console.log(错误);
console.log(令牌);
})
}
函数登录(){
authContext.login();
}
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.14/js/adal.min.js"></script>
<body>
<a href="#" onclick="login();">login</a>
<a href="#" onclick="getToken()">access token</a>
</body>
<script type="text/javascript">
var configOptions = {
tenant: "<tenant_id>", // Optional by default, it sends common
clientId: "<client_id>",
postLogoutRedirectUri: window.location.origin,
}
window.authContext = new AuthenticationContext(configOptions);
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
function getToken(){
authContext.acquireToken("https://graph.microsoft.com",function(error, token){
console.log(error);
console.log(token);
})
}
function login(){
authContext.login();
}
</script>