JQuery AJAX Reponse Set Cookie Header

У меня есть проект, который использует REST API. Здесь, когда я отправляю запрос на вход в систему, они отправляют мне ответ в виде JSON с некоторыми данными. Наряду с этим в заголовке ответа

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=/

Здесь у нас естьSet-Cookie , но этот файл cookie не устанавливается. Мне нужно, чтобы этот cookie был установлен, потому что для любого другого доступа к API, сервер будет проверять этот cookie.

Как я могу решить эту проблему? Каково решение для метода jQuery AJAX Header Set-Cookie?

 Jan Hančič19 окт. 2012 г., 08:42
Где вы делаете этот запрос?

Ответы на вопрос(2)

что реальная проблема заключается в том, что если у вас есть браузерНастройки конфиденциальности / cookie установлены на параноидальные, чем в некоторых браузерах (по крайней мере, FF & IE), похоже, игнорирует заголовки Set-Cookie на основе XHR.

Вот's ссылка на некоторую справку FF, которая может быть полезна для ваших пользователей.http://support.mozilla.org/en-US/kb/fix-login-issues-on-websites-require-passwords

Хотелось бы, чтобы был лучший ответ / обходной путь для этого 8 (

Решение Вопроса

е мне знать, если это работает.

$.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" : "" );
}
 thecodejack19 окт. 2012 г., 11:32
я все еще не ясен .. этот код установит куки с вашего веб-сервера в вашем браузере
 Jubin Thomas19 окт. 2012 г., 10:19
Этот код установит cookie для моего локального сервера. Но моя проблема в том, что мне нужно установить его для сервера API. Cookie не предоставляет никаких доменных имен.

Ваш ответ на вопрос