2

jQuery .ajax() 呼び出しを使用してブラウザー Cookie を設定しようとしていますが、機能していません。

console.log("before cookies:" + document.cookie);
$.ajax({
    dataType: "json",
    contentType: "application/json",
    url: url,
    type: "GET",
    processData: false
}).then(function (data) {
    console.log("after cookies:" + document.cookie);
});

サーバー側では、システムは応答に Set-Cookie を追加します。

Access-Control-Allow-Headers    Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Origin *
Content-Length  63
Content-Type    application/json;charset=ISO-8859-1
Expires Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie  myApiKey=testkey;Expires=Wed, 20-Aug-2014 18:11:57 GMT;Max-Age=31536000

出力は空です:

before cookies:
after cookies:

これがこすりです。メイン ページは 1 つのサブドメインにあり、ajax 呼び出しは別のサブドメイン (api.mydomain.com) に対するものです。しかし、サーバー側で CORS ヘッダーを正しく設定したと思います。それはうまくいくはずです。

Firebug は Cookie が設定されていることを報告しますが、どういうわけか外部ページには表示されません。トリックは何ですか?

4

1 に答える 1

1

これは Cookie ドメインの問題であることがわかりました。いくつかひねりが加えられています。ドメインには削除する必要のあるポート番号がありました。また、このセットアップのサーバー側はリクエストのホスト名にアクセスできず、IP アドレスのみにアクセスできました。 、他のものを台無しにしました。

また、javascript を使用してクライアント側で Cookie を設定しようとしましたが、クライアント側のセキュリティでクロス ドメイン Cookie を設定できないことがわかりました。CORS はサーバー側専用です。

于 2013-08-20T20:47:23.543 に答える