我在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
答案 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