10

domainクロス サイト リクエストを使用してファイルを追加すると、Cookie を設定できません。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
    },
});

すべてがFirefoxで問題ありません。Chrome は Cookie を設定していません。ドメインフィールドが削除された場合にのみ、すべてがすべてのブラウザーで機能します。次のリクエスト (Cookie を設定した後) で、その Cookie がヘッダーに表示されることがわかります。応答設定 Cookie 後の Firefox 要求の例 (応答にドメイン フィールドがある場合):

Cookie: Auth=l_hash=123456&user=xyz&remember_me=false
4

2 に答える 2

7

問題は、ヘッダーlocalhostの有効なドメインではない にある可能性があると思います。RFCSet-Cookieによると、少なくとも 1 つの「埋め込み」ドットが含まれている必要があります。FireFox はこれをより制限の少ない方法で実装する場合があります。代わりに IP アドレスを試してください。

于 2012-12-20T07:33:45.553 に答える