Blog do Andrei

Problemas com cookies e AngularJS

Introduction

user

Andrei Hodecker


Problemas com cookies e AngularJS

Posted by Andrei Hodecker on .
Featured

Problemas com cookies e AngularJS

Posted by Andrei Hodecker on .

Um problema que tive recentemente envolvendo cookies e AngularJS: no momento do login o servidor cria um cookie que guarda o id da sessão do usuário logado, este cookie aparece na resposta da requisição, mas não era salvo localmente e não era enviado nas próximas requisições.

Isto fazia com que o "login" não acontecesse realmente, pois nas requisições subsequentes o servidor não conseguia localizar a váriavel de sessão do usuário.

Solução

O que acontece é que o AngularJS opera em um modo de segurança que não salva cookies que recebe de resposta quando o servidor está em um domínio diferente (leia-se Cross-site HTTP requests).

Para resolver este problema, é necessário habilitar requisições com credenciais. No AngularJS é bem simples, basta setar como default:

.config(function($httpProvider) {    
  $httpProvider.defaults.withCredentials = true;
});

Nota

Se o seu web service estiver configurado como Access-Control-Allow-Origin : * você receberá uma mensagem de erro ao habilitar credenciais, é necessário trocar para um controle de acesso menos permissivo, especificando os domínos de origem que podem acessar, por exemplo:

Access-Control-Allow-Origin : http://localhost:8080

user

Andrei Hodecker

http://andreih.com