XMLHttpRequest не удается загрузить http://localhost:57997/Home/Get

Когда я пытаюсь получить доступ к WebApi из MVC, я получаю эту ошибку

XMLHttpRequest cannot load http://localhost:57997/Home/Get. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:64035' is therefore not allowed acces

Обслуживание.Js

app.service('MyService', function ($http) {

  var ApiAddress = "http://localhost:57997/";

  this.GetWebData = function () {
    var Getdatas= $http({
      url: ApiAddress + 'Home/Get',
      type: 'GET',
      dataType: 'json',
      params: JSON.stringify(),
      content:{'content-type' :'application/Json'}
    })
    return Getdatas;
  }
});

Контроллер.Js

app.controller('WebCtrls', function ($scope,MyService) {
  $scope.Hello = "Hello angular How r u...";

  $scope.GetDb = function () {
    alert('Hello..');
    var SerData = MyService.GetWebData();
    SerData.then(function (d) {
      $scope.Emp = d.data;
    })
  }
})

WebApi

public JsonResult Get()
{
    var x = prod.GetEmployees();
    return new JsonResult { Data = x, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

Глобальный.asax

в глобальном файле WebApi я написал код bellow для cross page origin

protected void Application_BeginRequest()
{
    string[] allowedOrigin = new string[] { "http://localhost:57997/" };
    var origin = HttpContext.Current.Request.Headers["Origin"];
    if (origin != null && allowedOrigin.Contains(origin))
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", origin);
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET,POST");
        //Need to add more later , will see when required
    }
}

1 ответ

  1. Вы можете справиться с этим, отключив опцию веб-безопасности браузера chrome, выполнив команду из папки, где chrome.exe присутствует. Сначала закройте все экземпляры chrome. Затем выполните следующую команду

    хром.exe —disable-web-security

    Вы можете обрабатывать его на стороне сервера, фильтруя все запросы, поступающие на сервер, добавьте заголовок к ответу, как это.

    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");