Search code examples
jquerycookieshttpresponsejquery-cookie

jQuery AJAX Response Set Cookie Header


I have a project which using a a REST API. Here when Isend a login request, they are sending me the response as JSON containg some data. Along with that in Response Header

Access-Control-Allow-Origin:*
Connection:keep-alive
Content-Length:239
Content-Type:application/json
Date:Fri, 19 Oct 2012 06:28:12 GMT
Server:Apache/2.2.22 (Amazon)
Set-Cookie:session=username; Path=/

Here we have a Set-Cookie , but this cookie is not setting. I need this cookie to be setted, because for any other API access, the server will check for this cookie.

How can I resolve this Issue? What is the solution for jQuery AJAX response Header Set-Cookie method?


Solution

  • You can get headers from XMLHTTPRequest. This may help. Let me know if this is working.

    $.ajax({
       type: 'POST',
       url:'url.do',
       data: formData,
       success: function(data, textStatus, XMLHttpRequest){
            var cookietoSet=XMLHttpRequest.getResponseHeader('Set-Cookie');
    
            Set_Cookie(cookietoSet.split('=')[0],cookietoSet.split('=')[1],expires, path, domain, secure)//change as per ur needs
       }
       error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.getResponseHeader('some_header'));
       }
      });
    
    
    
    
    function Set_Cookie( name, value, expires, path, domain, secure )
    {
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );
    
    /*
    if the expires variable is set, make the correct
    expires time, the current script below will set
    it for x number of days, to make it for hours,
    delete * 24, for minutes, delete * 60 * 24
    */
    if ( expires )
    {
    expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    
    document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
    }