PHP 開発で遭遇するクロスドメインの問題は、主に IFRAME、FRAME、または JS がページのクロスドメインにある場合、IE にはページに Cookie が含まれないように制限するセキュリティ ポリシーがあります。 P3P、この戦略には制限はありません。
これは、P3P がクロスドメインを突破するための実行可能な前提条件でもあります。実際、Firefox Chrome ブラウザーにはそのような制限はありません。
まず、P3P とは何かを理解しましょう。
P3P (Platform for Privacy Preferences) は、ユーザーにプライバシー保護を提供するために W3C によって発行されたプライバシー保護推奨標準です。
P3P 標準の背後にある考え方は、Web サイトのプライバシー ポリシーで、サイトが収集する情報の種類、情報が誰に提供されるか、情報が保持される期間について訪問者に通知する必要があるというものです。たとえば、「この Web サイトは、サイトの利用を改善するために、お客様がアクセスするページを監視します。」または「この Web サイトは、より適切な広告を提供するために最善を尽くします。」などの文言をサイトに表示する必要があります。
P3P 対応サイトを訪問するユーザーは、サイトのプライバシー レポートを表示し、Cookie を受け入れるかサイトを使用するかを決定する権利を有します。
以下は、P3P ヘッダーを使用してドメイン間で Cookie を設定する php の例です: http://www.a.com/a_setcookie.php ファイルの内容:
http://www.a.com/a_getcookie .php ファイルの内容:
http://www.b.com/b_setcookie.php ファイルの内容:
ブラウザからのアクセス: http://www.b.com / b_setcookie.php http://www.a.com/a_getcookie.php 1 つの b.com ドメインにアクセスした後、a.com ドメインに設定されている Cookie 値が見つかりませんでした。
この時点で、http://www.a.com/a_setcookie.php ファイルの内容を次のように変更すると、
header( 'P3P: CP= CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setcookie("phpernote", $_GET['id'], time()+ 3600, "/", ".a.com");
?>
再度アクセスしてください: http://www.b.com/b_setcookie.phphttp://www. a.com/a_getcookie。php は b.com ドメインにアクセスした後、a.com ドメインの Cookie 値を設定します。
上記の例から、P3P ヘッダー情報を送信することでクロスドメインが実現されることがわかります (Firefox では P3P を送信しなくてもクロスドメインが成功します)。上記のコードの重要な部分は、PHP が P3P プロトコル コードを使用していることです。 header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');