2013-05-31 13 views
28

AJAXリクエストでクッキー値を設定したいが、以下のコードは機能しません。AJAXリクエストでクッキー値を設定する方法は?

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

ヘッダーにCookieを設定するにはどうすればよいですか?

+4

単に設定で 'setCookies'オプションはありません。 – gdoron

+0

あなたは何をしようとしています..? –

+1

javascriptでクッキーを先に設定してからリクエストを送信する必要があります。ヘッダーには、ajaxリクエストにCookieが含まれます。 JSでクッキーを設定して取得するには、次の関数を使用します。http://www.w3schools.com/js/js_cookies.asp – Michael

答えて

37

基本的に、Ajaxリクエストと同期リクエストは、ドキュメントCookieを自動的に送信します。だから、リクエストするのではなく、ドキュメントにクッキーを設定する必要があります。しかし、あなたの要求はクロスドメインであり、状況はより複雑になりました。ドキュメント・クッキーを設定し、更に、this answerに基づか、あなたはそのクロスドメイン環境への送信を許可する必要があります

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

クッキーを並べ替え、並べ替えて送信したい場合、どうすればいいですか?結局のところ、クッキーはヘッダーです。 :) –

+0

@TomášZato[XHR仕様](http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader()-method)によれば、それはできません。 (ポイント5 'ヘッダが大文字と小文字を区別しないマッチの場合、これらのステップを終了する' ... 'Cookie' ...'上記のヘッダは、ユーザエージェントによって制御されて、それらの側面を制御できるようにします。ある程度。」)。リクエスト前に設定し、 'complete'コールバックで削除することで*まだ*クッキー*を作ることができると思います。私はそれがブラウザでできることは最大だと信じています。 – Tommi

+0

私はたまに、JavaScriptがシングルスレッドなので、Cookieを設定して後で削除することは、他のスクリプトでは否定的な結果にならないことを思い出しました。 –

関連する問題