クロスドメインiframe内でのPHPセッション変数の設定の問題
-
03-07-2019 - |
質問
Coles Notesバージョン:
index.php?map_id=foo
はwww.not-my-domain.comのiframeにロードされます。インデックスセットSESSION['map_id']
= foo。 FlashファイルはAuthenticate.phpを介してSESSION
を取得しようとしますが、Authenticate.phpには any SESSION['map_id'] = foo
変数の値が設定されていません。
-最初のロードのみ、クロスドメインの問題。
詳細:
設定している場所にインデックスがあります:LoadVars
インデックスファイルは、フラッシュファイルをロードします。初期化されると、フラッシュは「Authenticate.php」ファイルにアクセスします。このファイルは$map_id
をエコー出力し、session_start()
を介してフラッシュにロードされます。その後、Flashは適切なデータを表示します。
この手順は他の方法では実行できません
これはすべてメインサイトで問題なく機能します。この問題は、iframe埋め込みコードを提供して他のサイトに移植しようとすると発生します。
<iframe src="http://www.mydomain.com/?map_id=foo&code=bar" ... ></iframe>
別のサイト(www.anotherdomain.com)からの埋め込みコードを新たに読み込むと、<=>変数は破壊されたようです。 (<=>空白を出力します)
インデックスファイルは引き続き<=>を「foo」として適切にエコーします。「Authenticate.php」ファイルは<=>変数にアクセスできないようです。
すべての適切なファイルに<=>が存在することを確認しました。
解決
PHPセッションIDはデフォルトでCookieを介して渡されますが、ドメイン間でCookieを転送することはできません。代わりに、URLを介してセッションIDを渡してみてください。
セッションIDが自動的に行われない場合、URLでphpにセッションIDを渡す方法はいくつかあります。
-
セッションIDをURLに手動で渡すことができます(他のget変数の前に来る必要があります):
<!> lt; iframe src = <!> quot; http://www.mydomain.com/?<!> amp; map_id = foo <!> amp; code = bar <!> quot; <! > gt;
-
Cookieを無効にすると、すべてのリクエストでURLにセッションIDが自動的に追加されます:
ini_set(<!> quot; session.use_cookies <!> quot;、<!> quot; 0 <!> quot;);
-
url_rewriter.tags設定を編集できます。これは、セッションIDで書き換えるHTMLタグをPHPに指示します。ここでは、iframe = srcがデフォルトセットに追加されています。
ini_set(<!> quot; url_rewriter.tags <!> quot ;, <!> quot; a = href、area = href、frame = src、iframe = src、input = src、form = fakeentry <!> quot;);