2011-07-04 3 views
12

CORS가 현재 프로젝트에서 작동하고 있습니다. 제대로 작동하지 않는 것 중 하나가 쿠키입니다.Jquery Ajax CORS + HttpOnly Cookie

이제 쿠키가 잘 나오고 서버에서이를 발급하여 방화벽으로 보내면 firebug 쿠키 섹션에서 볼 수 있습니다. 내가 그 서비스에 대한 후속 호출을 할 때

GET /some/entity/ HTTP/1.1 
Host: localhost:1837 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 
Accept: */* 
Accept-Language: en-gb,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Referer: http://localhost:6879 
Origin: http://localhost:6879 

내가 내 아약스 호출 특별한 아무것도 할 필요합니까 ... 헤더에 쿠키를 보낼 것 같지 않습니다?

var ajaxOptions = { 
    url: serviceResourceUrl, 
    type: "get", 
    dataType: "json", 
    success: successCallback, 
    error: failedCallback, 
    xhrFields: { withCredentials: true } 
}; 

$.ajax(ajaxOptions); 

답변

9

xhrFields 대신 beforeSend 속성을 사용해보십시오. 귀하의 경우 :

var ajaxOptions = { 
    url: serviceResourceUrl, 
    type: "get", 
    dataType: "json", 
    success: successCallback, 
    error: failedCallback, 
    beforeSend: function(xhr){ 
     xhr.withCredentials = true; 
    } 
}; 

$.ajax(ajaxOptions); 

당신은 자세한 내용은 여기를 배울 수 있습니다 : Sending credentials with cross-domain posts?

+1

나는 원래 그런 식으로 일을하려고했지만, 그것은 전혀 작동 wouldnt한다. xhrFields : {...}에 대한 게시물을 보았고 나를 위해 쿠키를 검색하는 데 효과가있었습니다. 다른 방법을 다시 시도 할 것입니다. – somemvcperson

+0

그냥 시도해 보니, 아직도 운이 없다. 쿠키는 방화 광구에서 볼 수 있으며, 올바른 만료 및 도메인을가집니다. 서비스에서 디버깅 할 때 쿠키가 없습니다 : ( – somemvcperson

+0

모든 코멘트는 죄송 합니다만, 도메인을 두 번 확인하면 로컬 호스트 (부분적으로는 정확합니다)가보고되지만, 개발중인 서비스는 실제로 localhost : 1873에 있습니다. 나는 쿠키를 편집하고 해당 도메인을 넣으려고하는데 그냥 무시하고 localhost 만 유지하는 것 같습니다. 서버가 제대로 설정 한 것처럼 보입니다 ... Firefox가이 버그 일 가능성이 있습니까? – somemvcperson