Search code examples
htmlangularjswebkitxmlhttprequest

$http doesn't send cookie in Requests


We are working on a RESTful Webservice with AngularJS and Java Servlets. When the user logs in, our backend sends a "Set-Cookie" header to the frontend. In Angular we access the header via $cookies (ngCookie - module) and set it. enter image description here

Now that the user is logged in he can for example delete some stuff. Therefore the frontend sends a GET request to the backend. Because we work on different domains we need to set some CORS Headers and Angular does an OPTIONS request before the actual GET request:

OPTIONS request: OPTIONS request

GET request GET request

We do this in Angular via $http module, but it just won't send the cookie, containing JSESSIONID.

How can I enable Angular to send cookies?


Solution

  • In your config, DI $httpProvider and then set withCredentials to true:

    .config(function ($httpProvider) {
        $httpProvider.defaults.withCredentials = true;
        //rest of route code
    })
    

    Info on angularjs withCredentials: http://docs.angularjs.org/api/ng.$http

    Which links to the mozilla article: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#section_5