使用Ajax调用控制器函数,给出No' Access-Control-Allow-Origin'标头存在错误

时间:2016-11-04 19:48:44

标签: jquery ajax azure azure-active-directory

我有一个使用Azure AD登录开发的MVC应用程序。我使用ajax来调用我的控制器中写入数据库的函数,但是,我引发了这个错误:

  

https://login.microsoftonline.com/ {XXX} .onmicrosoft.com / wsfed瓦特...%3D0%26id%3dpassive%26ru%3D%252fHome%252fpost&安培; WCT = 2016-11-04T19%3a37%3a05Z。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' https://mysite.mysite.ca'因此不允许访问。

这是发出错误的ajax电话:

 $.ajax({
    type: "POST",
    url: "Home/post",
    data: item,
    dataType: "json"
    success: KPR.showNewApp(item),
    error: function (xhr, ajaxOptions, thrownError) {
       console.log(xhr);
       console.log(thrownError);
    }
});

1 个答案:

答案 0 :(得分:0)

  

您对home / post的请求如何(通过JS)转发到login.microsoft.com

据我所知,当你在控制器中添加属性([Authorize])时,控制器中的功能需要授权。如果你想使用ajax,你会遇到CORS问题。我建议您在使用如下所示的ajax时缓存令牌并将令牌添加到其标头中:

$.ajax({
type: "POST",
headers: {
  "Authorization": "bearer " + token
},
url: "Home/post",
data: item,
dataType: "json"
success: KPR.showNewApp(item),
error: function (xhr, ajaxOptions, thrownError) {
   console.log(xhr);
   console.log(thrownError);
}
});