Ajax-вызов из LocalHost в тот же домен контроллера MVC во время использования KendoDataSource

Я пытаюсь получить доступ к данным с контроллера MVC, который находится на сервере IIS, расположенном в моем домене. Я получаю эту ошибку

"No 'Access-Control-Allow-Origin' header is present on the requested resource.
 Origin 'http://localhost:22205' is therefore not allowed access. " 

Вот мой вызов ajax:

binDropDownDataSource: new kendo.data.DataSource({
  autobind: false,
  serverFiltering: true,
  dataType: "json",
  crossDomain: true,
  transport: {
    read: {
      cache: false,
      //url: "/LogisticsWebApp/Requisitions/GetBins", This works if unremarked
      url: "https://www.MyDomain.com/LogisticsWebApp/requisitions/getsites",
      xhrFields: {
        withCredentials: true
      },
      data: function () {
        {
          siteCode: viewModel.site.SiteCode,
          shopCode: viewModel.binShopBlock.ShopCode
        };
      }
    }
  }
})

Вот мой контроллер:

public JsonResult GetBins(string siteCode, string shopCode)
{
    var lookups = new Lookups();
    var data = lookups.GetBins(siteCode,shopCode);
    return Json(data, JsonRequestBehavior.AllowGet);
}   

Я хочу иметь возможность использовать приложение в качестве слоя данных, но мне нужно уметь развиваться на его основе.

2 ответа

Если вам это нужно для этого конкретного метода, вы можете изменить GetBins действие для:

public JsonResult GetBins(string siteCode, string shopCode)
{
    HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
    var lookups = new Lookups();
    var data = lookups.GetBins(siteCode,shopCode);
    return Json(data, JsonRequestBehavior.AllowGet);
} 

редактировать

Если вам нужно сделать это с помощью метода, которого нет в контроллере, вы должны использовать:

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

Добавьте заголовок ("Access-Control-Allow-Origin","*"), а также заголовок ("Access-Control-Allow-Headers", "X-Requested-With")

System.Web.HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
System.Web.HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "X-Requested-With");
Другие вопросы по тегам