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");