2011-07-04 24 views
12

Şu anki projemde CORS çalışmam var, ancak doğru şekilde çalışamayacağım bir şey çerezler.Jquery Ajax CORS + HttpOnly Kurabiye

Şimdi kurabiyem iyi olsun, sunucu bunu gönderiyor ve gönderiyor ve firefox bunu kabul ediyor, bunu firebug çerezleri bölümünde görebiliyorum. O servise sonraki çağrı yapmak Ancak o

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 

benim ajax çağrısı ile özel bir şey yapmak gerekir mi ... başlığındaki çerez göndermeye görünmüyor?

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

$.ajax(ajaxOptions); 

cevap

9

xhrFields yerine beforeSend özelliğini kullanmayı deneyin. Senin durumunda:

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

$.ajax(ajaxOptions); 

Daha burada öğrenebilirsiniz: Sending credentials with cross-domain posts?

+1

Başlangıçta bu şekilde yapmaya çalışıyordum, ama hiç işe yaramaz. XhrFields: {...} üzerinde bir yazı gördüm ve bu benim için çerezleri almak için çalıştı. Diğer yöntemi tekrar deneyeceğim. – somemvcperson

+0

Sadece denedim, hala şans yok. Çerez, ateşböceğinde görülebilir, doğru son kullanma ve etki alanına sahiptir. Hizmet üzerinde hata ayıklama olduğunda hiçbir tanımlama bilgisi yoktur :( – somemvcperson

+0

Tüm yorumlar için özür dilerim, ancak etki alanını iki kez kontrol ettim ve firebug'da localhost (kısmen doğrudur) raporlar, ancak geliştirme hizmetinin aslında localhost: 1873. Ben çerez düzenlemek ve bu etki alanı koymak deneyin, sadece onu yok sayar ve sadece localhost tutmak için görünüyor.O sunucu doğru olarak ayarlanmış gibi görünüyor ... bu yüzden muhtemelen firefox ile bir hata nedir? – somemvcperson