8

次のドメインに 2 つのアプリケーションがあります: www.bar.comwww.foo.bar.com。2 番目のアプリケーションは、最初のアプリケーションを介して認証を行います (クロス ドメイン リクエストを使用)。この後、Cookie をブラウザーに設定しましたが、Internet Explorer では機能しません。

$.cookie("SESSION_KEY", loginResult.sessionKey, {
        expires: 365,
        path: "/",
        domain: ".bar.com"
});

このコードは、Internet Explorer v.9 を除くすべてのブラウザーで動作します。Cookie は設定されません。どうすれば修正できますか?

4

2 に答える 2

3

これは IE の設定によるものです。Toolsメニューから を選択しますInternet Options。タブに移動しSecurityます。[インターネット Web コンテンツ ゾーン] を選択し、クリックして [Custom Levelセキュリティ設定] を開きます。

設定を見つけMiscellaneousます。を有効にしてみてくださいAccess data sources across domains。設定を有効にするには、IE の再起動が必要になる場合があります。

于 2013-04-02T13:26:42.137 に答える
2

IE は、市場で唯一の Web ブラウザーとして、部分的な P3P 標準 (CORS での Cookie の受け入れに関するもの) を実装しています。

したがって、サーバー応答を使用して Cookie を設定できます。これを行うには、サーバー応答 (Cookie を設定する) にこのヘッダーを設定する必要があります (PHP symfony プロジェクトから以下の行をコピーして貼り付けます):

$response->headers->set('P3P', 'CP="random_text"');

CORS リクエストにフラグ 'withCredentials=true' を追加することについても覚えておく必要があります (それ以外の場合、すべての Cookie はリクエスト/レスポンスから送信/保存されます)。

于 2016-09-06T08:20:49.927 に答える