terça-feira, 17 de janeiro de 2017

IE fazendo cache para $http do AngularJS

Estava tendo uma situação com um cliente onde ele salvava e recebia mensagem de confirmação de salvo com sucesso, mas ao editar novamente a informação não estava lá. Só no Internet Explorer acontecia isso.

Conversando vimos que ao dar logoff e entrar novamente a informação aparecia, desconfiei logo de cache e para centralizar pensei em colocar um no-cache no header via interceptor do AngularJS.

Procurando na internet achei este conteúdo muito bom:

Unindo minha idéia inicial e link acima e também com o objetivo de manter cache de outros recursos como html, imagens, css usei o seguinte:


app.factory('commonHttpInterceptor', function ($q, $rootScope, commonConstants) {
    return {
        'request': function(config) {
            if (config.url.indexOf(commonConstants.URL_BASE) > -1) {
            if (!config.headers) config.headers = {};
            config.headers['Cache-Control'] = 'no-cache';
                config.headers['Pragma'] = 'no-cache';              
               
                $rootScope.openLoading();
            }
           
            return config;
        },