Frage Wie deaktiviert man das Zwischenspeichern von AJAX-Anfragen in Angular in IE?


Ich habe eine eckige Anwendung, die HTTP GET Aufrufe an den Server macht. Es funktioniert gut in Chrome & Firefox. Ich habe jedoch herausgefunden, dass der IE die GET-Antwort zwischenspeichert, und nachdem ich einen POST gemacht habe, muss ich dieselbe GET-Anfrage aufrufen und die neue aktualisierte Antwort erhalten, aber der IE speichert sie zwischen. Ich möchte das Caching nur für IE deaktivieren. Ich habe versucht mit einem

'If-None-Match': '*'

Header für meine GET-Aufrufe anfordern, aber dann deaktiviert das Caching für alles. Gibt es eine Möglichkeit dies nur bedingt für IE zu tun? Oder gibt es eine andere Möglichkeit, es zu deaktivieren?


5
2017-09-30 19:09


Ursprung


Antworten:


HTML

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">

ODER

JS

if (!$httpProvider.defaults.headers.get) {
        $httpProvider.defaults.headers.common = {};
}
$httpProvider.defaults.headers.common["Cache-Control"] = "no-cache";
$httpProvider.defaults.headers.common.Pragma = "no-cache";
$httpProvider.defaults.headers.common["If-Modified-Since"] = "0";

4
2017-10-01 07:40



Mit den oben genannten Informationen konnte ich eine einmalige Anfrage in einem Controller bearbeiten, anstatt die globalen Standardwerte zu ändern:

var configOptions = {
    headers: {
        common: {
            "Cache-Control": "no-cache",
            "If-Modified-Since": "0",
            "Pragma": "no-cache"
        }
    }
};

$http.get("path/to/file.json", configOptions)
    .then(function (response){
        //do stuff
    });

2
2018-01-24 12:30



$ http, in IE. Kein Antwortcode von 200 oder 304. Er verwendet nur lokalen Cache.

Versuchen Sie, Header zu $ ​​httpProvider hinzuzufügen.

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

    //disable IE ajax request caching
    $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';

    $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
    $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
}]);

1
2017-10-01 07:34