3

domain.comsub1.domain.comおよびの 3 つのドメインで構成される Web サイトを持っていますsub2.domain.com

sub1.domain.com の AJAX を介して、Cookie を設定する domain.com のページを取得したいと考えています。この Cookie は、3 つのドメインすべてで利用できる必要があります。

試してみました:setcookie('name','value',time()+3600,'/','.domain.com');試してみました: setcookie('name','value',time()+3600,'/','domain.com');(ドメインの前のドットに注目してください。古いブラウザーはそれを受け入れないと言われました。) しかし、これはうまくいきませんでした。実際、Cookie セットはありません。

サブドメインからの AJAX リクエストに Cookie を設定するにはどうすればよいですか? 私はすでにheader('Access-Control-Allow-Origin: *');setcookie-page に追加しました。

4

1 に答える 1

4

資格情報を使用する際に必要なことがいくつかあります。

  • withCredentials国旗

AJAX リクエストがxhr.withCredentials = true;設定されている必要があります。

  • Access-Control-Allow-Credentials

サーバーも で応答する必要がありますheader('Access-Control-Allow-Credentials: true');

  • ワイルドカードのオリジンは許可されていません

を指定するwithCredentialsと、サーバーは のオリジンを許可できません*。したがって、有効なドメインのリストで応答する必要があります。

header('Access-Control-Allow-Origin: http://sub1.domain.com,http://sub2.domain.com');

それでもサブドメインの任意のリストが必要な場合は、次のようにすることができます。

if (substr($_SERVER['HTTP_ORIGIN'], -11) === '.domain.com') {
    header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
}

これにより、許可されたオリジンがOriginリクエスト ヘッダーの値に設定されますが、それはドメイン上にある場合のみです。

于 2013-01-28T20:38:25.820 に答える