当我向以下对象发出 Ajax 请求时出现 CORS 错误https://login.microsoftonline.com/common/oauth2/v2.0/token
从我的申请中。
下面是我正在使用的代码示例:
var inputData = {
'grant_type': 'authorization_code',
'code': '<codeValue>',
'redirect_uri': '<returnUrl>',
'client_id': '<client_id>',
'client_secret': '<client_secret>'
};
$.ajax({
url: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
type: 'post',
contentType: 'application/x-www-form-urlencoded',
dataType: 'application/json',
data: inputData,
success: function (data, text) {
console.log(data.access_token);
},
error: function (data, status, error) {
console.log('failed');
}
});
浏览器控制台显示以下错误:
跨源请求被阻止:同源策略不允许读取远程资源https://login.microsoftonline.com/common/oauth2/v2.0/token
。 (原因:CORS 标头“Access-Control-Allow-Origin”丢失)。
我想知道如何消除 CORS 错误。
你不应该使用授权码流程 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-oauth-code进行客户端大小的身份验证。这将要求您提供客户端密钥,就像您在这里所做的那样,这是一个很大的禁忌。
如果您需要完全根据客户端大小处理身份验证,则需要使用隐式流程 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-implicit(又名客户端流程)。这允许您在不传递客户端密钥的情况下进行身份验证,并且不使用第二阶段 POST 来获取令牌。
我写了一篇关于隐式工作原理的演练,您可能会发现它也有帮助:v2 端点和隐式授予 http://massivescale.com/microsoft-v2-endpoint-implicit-grant/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)