0

我仅使用 IE11 通过 Angular JS webApi 获取请求获取 304 状态代码。当我按 Ctrl+F5 时,它会更正并获得 200 状态代码(这是正确的行为)。使用 Chrome 可以正常工作。我正在使用以下代码。

factory('StudentService', function ($q, $http, pathProvider, searchParams, student) {
return {
    getStudents: function (successcb) {
        var deferred = $q.defer();
        var url = pathProvider.getPath("Student/GetStudents");
        $http({
            method: 'GET'
            , url: url
            , cache:false
        }).
            success(function (data, status, headers, config) {
                deferred.resolve(data);
            }).
            error(function (data, status, headers, config) {
                deferred.reject(status);
                alert('getStudents ' + status + ': ' + data);
            });
        return deferred.promise;
    }
}

看来 IE 有问题。

谢谢

4

1 回答 1

3

IE 可能会在请求中添加If-Modified-SinceIf-None-Match请求标头。如果按CTRL+F5,则强制刷新浏览器,这意味着 IE 不会添加这些标头。

看来 IE 并没有很好地解释 angular 选项cache:false。我不知道这是 IE 还是 Angular 问题,但您可以通过确保请求是唯一的,在 javascript 中解决它。例如,通过向查询字符串添加一个虚拟参数:

    $http({
        method: 'GET'
        , url: url
        , cache:false
        , params: { 'foobar': new Date().getTime() }
    })

您还可以通过禁止任何浏览器缓存在服务器上解决此问题。你如何做到这一点取决于你使用的服务器技术。

于 2015-03-19T19:22:06.210 回答