domain
がクロスサイトリクエストを使用して追加された場合にCookieを設定できません。私はjquery ajaxを通じてリクエストを呼び出すことでそれを達成しようとしています。ドメインフィールドを持つCORSクッキーは、FirefoxでのみjQuery AJAXを使用して設定しています
Firefox以外のブラウザでも動作させることはできますか?
いくつかのリクエストヘッダ:
Accept:application/json, text/javascript, */*; q=0.01
Content-Length:55
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:localhost:53862
Origin:http://localhost:54265
Referer:http://localhost:54265/
レスポンスヘッダ:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:x-requested-with, origin, content-type, accept, Proxy-Connection
Access-Control-Allow-Methods:GET,POST,PUT,OPTIONS, DELETE
Access-Control-Allow-Origin:http://localhost:54265
Set-Cookie:Auth=l_hash=123456&user=xyzl&remember_me=false; expires=Fri, 18 Jan 2013 13:42:10 GMT; domain=localhost; path=/
コード:
$.ajax({
type: "PUT",
url: apiHost + "api/account/login/",
data: $("#loginBarForm").serialize(),
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
crossDomain: true,
xhrFields: {
withCredentials: true
},
});
のEv erythingはfirefoxでうまいです。 ChromeはCookieを設定していません。ドメインフィールドが削除されている場合のみ、すべてのブラウザですべての作業が行われます。私は、次のリクエスト(クッキーを設定した後)でそのクッキーがヘッダーに現れることがわかります。 (応答がドメインフィールドを持っていた)クッキーを設定し、応答した後、Firefoxの要求から例:
Cookie: Auth=l_hash=123456&user=xyz&remember_me=false
'localhost'は' Set-Cookie'ヘッダの有効なドメインですか? [RFC](http://www.ietf.org/rfc/rfc2109.txt)によると、少なくとも1つの "埋め込み"ドットを含む必要があります。 FireFoxはこれをあまり制限の少ない方法で実装するかもしれません。代わりにあなたのIPアドレスをお試しください。 – Stan
@Stanありがとう、答えとして投稿してください。 – Mariusz