AngularJS $ Http未在Edge / IE

时间:2016-07-28 06:48:36

标签: angularjs debugging xmlhttprequest asp.net-core-mvc microsoft-edge

我有以下代码,它在Mozilla,Chrome上运行得很好,但在Microsoft Edge或Internet Explorer上却没有。这是发生的事情。

当用户加载网页时,我会触发以下代码:

    $http.get("/api/items")
        .then(function (response) {
            angular.copy(response.data, $scope.items);
        }, function (error) {
            $scope.errorMessage = error.statusText;
        })
    .finally(function () {
        $scope.isBusy = false;
    });

将所有值拉入<ul>。此部分适用于所有浏览器。但是,当我触发以下内容时:

    $scope.interval = $interval(function () {
        $http.get("/api/items")
            .then(function (response) {
                //success

                //loop through the response
                angular.forEach(response.data, function (value, key) { ... more code here}

然后突然响应不再来自我的网络API。我的意思是,当我调试我的应用程序并在我的GET api中放置断点(我的意思是在我的MVC控制器中的Visual Studio中)时,我看不到从Microsoft Edge触发的调用调用。

以下是Chrome浏览器的外观:

enter image description here

这个来自Edge:

enter image description here

据我了解,Edge只对我的GET进行了一次真正的XHR调用,其余所有调用只是从内存中缓存出来的?

如何解决这个问题?为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

最后我发现,问题在于Angular存储Cache。可以使用两个选项(取自其他StackOverflow帖子):

1)角度方法(由于未知原因对我不起作用):

myModule.config(['$httpProvider', function($httpProvider) {
    //initialize get if not there
    if (!$httpProvider.defaults.headers.get) {
        $httpProvider.defaults.headers.get = {};    
    }    

    // Answer edited to include suggestions from comments
    // because previous version of code introduced browser-related errors

    //disable IE ajax request caching
    $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
    // extra
    $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
    $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
}]);

2)ASP.NET装饰GET方法的方法:

[ResponseCache(NoStore = true, Duration = 0)]