2013-05-31 35 views
28

Chcę ustawić wartość cookie na żądanie AJAX, ale poniższy kod nie działa.Jak ustawić wartość plików cookie za pomocą żądania AJAX?

$.ajax({ 
    type: "GET",  
    url: "http://example.com", 
    cache: false, 
    setCookies: "lkfh89asdhjahska7al446dfg5kgfbfgdhfdbfgcvbcbc dfskljvdfhpl", 
    crossDomain: true, 
    dataType: 'json', 
    success: function (data) { 
     alert(data); 
    }); 

Jak ustawić pliki cookie w nagłówku?

+4

Tam po prostu nie jest 'setCookies' opcja w ustawieniach. – gdoron

+0

co próbujesz zrobić ..? –

+1

Powinieneś ustawić plik cookie wcześniej w javascript, a następnie wysłać żądanie. Nagłówki będą zawierać plik cookie na żądanie ajax. Użyj tych funkcji, aby ustawić i uzyskać plik cookie w JS: http://www.w3schools.com/js/js_cookies.asp – Michael

Odpowiedz

37

Zasadniczo żądanie ajax, jak również żądanie synchroniczne, automatycznie wysyła pliki cookie z dokumentami. Musisz ustawić plik cookie, aby dokumentował, a nie żądał. Jednak twoja prośba jest między domenami, a sprawy stały się bardziej skomplikowane. Bazując na this answer dodatkowo ustawić ciasteczko dokument, należy umożliwić jej wysłania do środowiska cross-domain:

type: "GET",  
url: "http://example.com", 
cache: false, 
// NO setCookies option available, set cookie to document 
//setCookies: "lkfh89asdhjahska7al446dfg5kgfbfgdhfdbfgcvbcbc dfskljvdfhpl", 
crossDomain: true, 
dataType: 'json', 
xhrFields: { 
    withCredentials: true 
}, 
success: function (data) { 
    alert(data); 
}); 
+4

A jeśli chcę, w pewnym sensie, sfałszować plik cookie i wysłać go bez ustawiania? W końcu ciasteczko to tylko nagłówek, daj spokój! :) –

+0

@ TomášZato Według [specyfikacji XHR] (http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader() -metoda) nie można tego zrobić. (Zobacz punkt 5 'Zakończ te kroki, jeśli nagłówek jest dopasowany do wielkości liter" ... Cookie' ... Powyższe nagłówki są kontrolowane przez klienta użytkownika, aby umożliwić kontrolę tych aspektów transportu. w pewnym stopniu.). Wierzę, że nadal możesz * sfałszować * plik cookie *, ustawiając * go przed żądaniem i usuwając w "pełnym" wywołaniu zwrotnym. Uważam, że jest to najbardziej możliwe w przeglądarce. – Tommi

+0

Po prostu przypomniałem sobie, że javascript jest pojedynczy wątek, więc ustawienie pliku cookie i usunięcie go później nie będzie miało negatywnych wyników na innych skryptach. –

Powiązane problemy