ホームページ >バックエンド開発 >PHPチュートリアル >http//www.phprecord.com_PHP へのクロスドメイン Cookie 転送の実装チュートリアル
著者: Christopher Kings-Lynne 翻訳: limodou Cookie は本当に素晴らしい発明で、Web 開発者はユーザーのログイン状態を保持できます。ただし、サイトまたはネットワークに複数のドメイン名がある場合、問題が発生する可能性があります。 Cookie の仕様によれば、Cookie は 1 つのドメイン名に対してのみ使用でき、他のドメイン名に送信することはできません。したがって、ブラウザーで 1 つのドメイン名に対して Cookie が設定されている場合、その Cookie は他のドメイン名に対しては無効になります。ユーザーがいずれかのサイトからログインし、他のドメイン名からもログインできるようにしたい場合、これは大きな問題になる可能性があります。 私のソリューションでは、次の一般的なフレームワークを使用します。 事前に構築されたスクリプトを使用して、GET または COOKIE を通じて渡されたセッション ID 番号を受け入れます。 COOKIE よりも GET 変数が優先されます。したがって、クロスドメイン名を参照する必要がある場合は常に、URL パラメータとして sessionid を送信します。 Apache 構成を変更して、すべてのクロスドメイン名 Cookie を書き換えます。その理由はすぐに明らかになるでしょう。 クロスドメイン参照が発生するときは常に変数を使用します。 ステップ 1: プリセット スクリプトを作成します。次のコードをプリセット スクリプトに追加します (または、すべてのスクリプトの前に関数に追加します)。 このコードが実行されると、スクリプトでグローバル sessionid 変数が使用できるようになります。ユーザーの Cookie に sessionid 値、または GET リクエストを通じて送信された sessionid 値が保存されます。 ステップ 2: すべてのクロスドメイン名参照に変数を使用する グローバル構成ファイルを作成して、切り替え可能なドメイン名の基本的な参照形式を保存します。たとえば、domain1.com と domain2.com がある場合、次のように設定されます: コード内で次のように設定すると、次の出力が生成されます: Click here to contact us ここにセッション ID が挿入されています。 URL に入りました。 この時点で、「Web サーバー上で、horizontal Lines、sessionid、horizontal Lines という名前のサブディレクトリが開かれる可能性がある?!?!?」と思うかもしれません。 ただし、次の手順では、これを機能させるために必要なコツを説明します。 ステップ 3: Apache を構成する。残りの手順は、この URL を書き換えるように Apache を構成することです: http://www.domain2.com/- 66543afe6543asdf6asd-/contact/次のようになります: http://www.domain2.com/contact/?sessionid=66543afe6543asdf6asd この URL: http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes 次のようになります: http ://www.domain2.com/contact/?email=yes&sessionid=66543afe6543asdf6asd これを実現するには、次のように 2 つの仮想サーバーをドメイン 1 とドメイン 2 として構成するだけです: DocumentRoot /usr/local/www /domain1 ServerName www.domain1. com RewriteRule の RewriteEngine ^/-(.*)-(.*?.*)$ $2&sessionid=$1 [L,R,QSA] RewriteRule ^/-(.*)-(.* )$ $2?sessionid=$1 [L,R,QSA]