a.com
というWebサイトがあり、このサイトの特定のページ(ページリンクなど)が読み込まれたときに、b.com
という別のサイトのCookieを設定し、b.com
にユーザーをリダイレクトするとします。
つまり、a.com/link
のロード時に、b.com
のCookieを設定し、ユーザーをb.com
にリダイレクトしたいのです。
私はそれをテストし、ブラウザは実際にa.com/link
からCookieを受信しましたが、b.com
へのリダイレクト要求でそのCookieを送信しませんでした。普通ですか?
他のドメインにクッキーを設定できますか?
別のドメインにクッキーを設定することはできません。これを許可すると、非常に大きなセキュリティ上の欠陥が生じます。
Cookieを設定するにはb.comを取得する必要があります。 a.comがユーザーをb.com/setcookie.php?c=value
にリダイレクトする場合
Setcookieスクリプトには、Cookieを設定してb.comの正しいページにリダイレクトするために次のものを含めることができます
<?php
setcookie('a', $_GET['c']);
header("Location: b.com/landingpage.php");
?>
トップアンサーに似ていますが、ページにリダイレクトしてから戻ると、ユーザーエクスペリエンスが低下する代わりに、ドメインAに画像を設定できます。
<img src="http://www.example.com/cookie.php?val=123" style="display:none;">
そして、cookie.phpのexample.comであるドメインBには、次のコードがあります。
<?php
setcookie('a', $_GET['val']);
?>
Subin へのヒント
できません。それは厄介なセキュリティリスクになります。
別のドメインのCookieを設定することはできません。
別のドメインにデータを渡す場合は、これをURLにエンコードできます。
a.com -> b.com/redirect?info=some+info (and set cookie) -> b.com/other+page
RFC6265 を参照してください:
ドメイン属性がオリジンサーバーを含むクッキーの範囲を指定しない限り、ユーザーエージェントはクッキーを拒否します。たとえば、ユーザーエージェントは、foo.example.comの「example.com」または「foo.example.com」のドメイン属性を持つCookieを受け入れますが、ユーザーエージェントはドメイン属性を持つCookieを受け入れません「bar.example.com」または「baz.foo.example.com」の。
注:セキュリティ上の理由から、多くのユーザーエージェントは、「パブリックサフィックス」に対応するドメイン属性を拒否するように構成されています。たとえば、一部のユーザーエージェントは、「com」または「co.uk」のドメイン属性を拒否します。 (詳細については、セクション5.3を参照してください。)
ただし、上記の回避策はimage/iframeで機能しますが、その安全性が理由で推奨されません。
a.my-company.com
とb.my-company.com
の代わりにa.com
とb.com
がある場合は、.my-company.com
ドメインのCookieを発行できます。これは受け入れられ、両方のドメインに送信されます。
できませんが、両方のページを所有している場合は...
1)クエリパラメータを介してデータを送信できます( http://siteB.com/?key=value )
2)サイトA内にサイトBのiframeを作成し、ある場所から別の場所に投稿メッセージを送信できます。サイトBはサイトB Cookieの所有者であるため、正しい投稿メッセージを処理することにより、必要な値を設定できます。 (他の不要な送信者があなたにメッセージを送信するのを防ぐべきです!それはあなた次第であり、あなたはそれが起こるのを防ぐためにあなたが使うことを決めるメカニズムです)