2

xyz.comなどのサイトでJSONPを使用して、サイトabc.com/test.phpを呼び出しています。ただし、このサイトを呼び出すたびに、IE6とIE7で新しいセッションIDを取得します。他のブラウザでは、それは一定のままです。

test.phpのコードは次のようなものです。

<?php
session_start();
echo session_id();
?>

ただし、別のウィンドウでhttp://abc.com/test.phpにアクセスし、xyz.comのページをJSONPコードで更新すると、定数IDが表示されます。理由がわかりません。助言がありますか?

これはIE6とIE7でのみ発生します。すべての作業を期待どおりに休ませます。どういうわけか、IE6とIE7は、実際に別のウィンドウでサイトにアクセスするまで、セッションID(つまりCookie名)を保持するためにシームしません。

4

1 に答える 1

3

PHP.netのいくつかの情報に基づいて、このヘッダーの追加は機能しますか?

<?php header('P3P: CP="CAO PSA OUR"'); ?>

引用:

".phpを提供しているサーバーとは異なるサーバーでフレーム(.htmlまたは他のファイルタイプ)によって参照される.phpファイルでセッション変数を使用する場合の回避策:

これらの条件下では、IE6以降は、作成しようとしたセッションCookieをサイレントに拒否します(session_start()を呼び出すことにより、暗黙的または明示的に)。

結果として、セッション変数は空の値を返します。

MS kbによると、回避策は、アクセス許可が付与されているという事実から、リモートの.phpページが悪用されないことを示すヘッダーを追加することです。

必要なセッション変数を作成/更新する.phpファイルにこのヘッダーを配置します。 "

これで解決しない場合は、JavaScriptから開始するリクエストでIEが送信しないため、HTTRefererに関係している可能性があります(たとえば、IEでこれを行うとHTTRリファラーの送信に失敗します)document.location.href = 'http://example.com/';

于 2010-01-18T14:26:42.360 に答える