デフォルトでは、Cookie クロス ドメインを設定できません。P3P ファイルを設定して有効にできると思います。http://p3ptoolbox.org/guide/section4.shtml#IVd
私はこれを自分で行ったことがないので、どれだけのブラウザーがそれを実装しているか、またはそのように機能するかどうかさえわかりません。
Virb は JavaScript を使用しているように見えます。セッション Cookie が設定されていない場合に、virb サーバーにJSON-P要求を行う AJAX ライブラリがあります。(Firefox の最初の読み込み、Firebug で確認できます) JSON 応答は、ユーザーがログインしているかどうかをページに通知し、ユーザーの状態を反映する必要があるページの部分を更新します。
つまり、ページには virb.com の JS が埋め込まれています。ドメインは virb.com であるため、virb.com に設定された Cookie がサーバーに送信されます。次に、サーバーは Cookie の結果を外部サイトに返します。
JS がないとうまく動かない virb の場合は、良い選択肢だと思います。ただし、HTTP リダイレクトでも同じことができます。
HTTP ホストがメイン ドメイン (example.com) でない場合:
if (!$_COOKIE['sessionid'] && $_SERVER['HTTP_HOST'] != 'example.com') {
// redirect to your main site
header('Location: http://example.com');
}
メイン サイトで Cookie を設定し、ユーザーを外部ドメイン (domain.com) に送り返して、場所にセッション ID を渡します。
header('Location: http://domain.com.com?sessid='.urlencode($_COOKIE['sessionid']));
最後のビットは、同じセッションが進行中なので、現在表示していたページにリダイレクトすることです。
setCookie(...); // sessid in $_GET['sessid']
header('Location: http://domain.com/');
実際には、最初のステップで現在表示しているページを example.com に戻すことができるので、後でリダイレクトして戻すことができます。
ヘッダーを使用しているだけで (コンテンツを出力する必要はありません)、ほとんどの場合 HTTP/1.1 を使用しているため、同じ TCP ソケットを使用することになります。これは非常に効率的であり、JavaScript オプションよりもサポートされると思います。
編集: 外部ドメインに戻ったときに Cookie を設定することを忘れないでください。
最後のステップはオプションですが、sessid が URL に含まれないようにします。これは、HTTPヘッダーに保持するよりもセキュリティ上の問題です。