当我向 /common/oauth2/v2.0/token 发出 Ajax 请求时出现 CORS 错误

2024-04-20

当我向以下对象发出 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(使用前将#替换为@)

当我向 /common/oauth2/v2.0/token 发出 Ajax 请求时出现 CORS 错误 的相关文章

随机推荐