AngularJS $ http.get方法在Firefox中返回null错误。 IE工作得很好

时间:2016-06-24 05:53:35

标签: javascript angularjs asp.net-web-api

我在AngularJS中使用$ http.get方法时遇到了一些问题。这有点奇怪,因为当我使用IE时,一切都很好,但是当我使用Firefox时get方法返回null异常而没有任何信息,为什么它不起作用。

我的代码:

 $scope.getData = function () {
        var surveyApiUrl = config.api.host + config.api.paths.survey;
        debugger;
        mainService.httpMethods.get(surveyApiUrl).success(function(data) {
            debugger;
            $scope.surveyData = data;
        }).error(function (data, status, headers, config) {
            debugger;
            alert(e);
        });
}

一些网络API:

 public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

IE的结果: IE result

Firefox的结果: Firefox result

1 个答案:

答案 0 :(得分:0)

<强>解决 问题在于服务器端的cors配置。我只添加了web api控制器的属性,但是配置文件中也需要启用cors。

对我有用的解决方案:

在webapi配置中:

public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.EnableCors();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

在webapi控制器中(NuGet中需要Microsoft Asp.NET Cross-Origin Support包):

 [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class SurveyController : BaseController