从Azure / oauth2 / token端点使用jQuery,Ajax或AngularJS获取access_token时的跨源问题

时间:2017-10-31 14:36:47

标签: javascript jquery angularjs ajax azure

我正在尝试从Azure生成access_token

错误讯息:

  

无法加载https://login.microsoftonline.com/......../oauth2/token:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:61697”访问。

代码段:

function SubmitForm() {
    var data = {
        'grant_type': "password",
        'client_id': "<client_id>",
        'username': "<username>@<tenant>.onmicrosoft.com",
        'password': "<password>",
        'resource': "<resource>",
        'redirect_uri': "http://localhost:55871/"
    }

    $.ajax({
        url: "https://login.microsoftonline.com/<tenant_id>/oauth2/token",
        type: "POST",
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        crossDomain: true,
        beforeSend: setHeader,               
        success: function(d) {
            console.log(d);
        },
        error: function (a, b, c) {
            console.log(a, b, c);
        }
    });
}

同样地,我也尝试过jQuery和AngularJS,但是也遇到了同样的错误。

Issue in client side

Response received from server side

您可以使用任何与浏览器无关的客户端脚本来帮助我们从Azure获取access_tokenrefresh_token吗?

注意:同一段代码仅适用于IE(不适用于Chrome,Edge,Safari等)。

1 个答案:

答案 0 :(得分:1)

请参阅:No 'Access-Control-Allow-Origin' header with Microsoft Online Auth

也许你得到了这个问题,因为你是从localhost访问它。