1

この話題が広範に取り上げられていることは知っていますが、私は完全に立ち往生しており、何らかの方向性と新しい意見を必要としています. 私は、IE6、8、Safari、Chrome、FF などで完全に動作する Facebook iFrame アプリケーションを持っています。

P3P ポリシー ファイルとそれに関連付けられた XML ファイルを作成しました。ポリシーは、P3P ポリシー バリデーターで完全に検証されます。

iFrame が Facebook 内から読み込まれるとすぐに赤目のアイコンが表示され、それをクリックすると、iFrame のドメインからの Cookie がブロックされていることが報告されます。デフォルトの「中」のプライバシー設定が IE7 に設定されていることを確認しました。興味深いことに、Google アナリティクスを削除すると、最初は Cookie をブロックせずにページが読み込まれますが、ページがリロードされるか、ユーザーがログインするとすぐに、P3P ヘッダーがすべてのサイトからすぐに送信されるにもかかわらず、Cookie が再びブロックされることがわかりました。ページ。すべてのアセットは S3 経由で送信されるため、問題はありません。

参考までに、これが私の P3P ファイルです。絶対パス、相対パス、CP と policyref の順序の切り替えを試しましたが、2 つを別のヘッダー呼び出しに分けましたが、うまくいきませんでした。

header('P3P: CP="NON DSP TAIa PSAa PSDa OUR IND UNI", policyref="/w3c/p3p.xml"');

P3Pヘッダーがブラウザで送受信されていることを確認しました。HTML ページに META p3p タグを追加しました。すべてのリダイレクトを削除しました。それでも問題は解決しません。私はこれを調べるのに多くの時間を費やしましたが、今ではアイデアがありません。新鮮な視点からこれにアプローチする方法についての考えやアイデアは大歓迎です. NGINX で PHP 5.3.5 を使用しています。フレームワークは使用されていません...

4

2 に答える 2

0

私も同じ問題を抱えていました。Facebook iframeアプリは、IE7を除くすべてのブラウザーでうまく機能しました。あなたが最初にアプリに行ったとき、それはうまくロードされました。ただし、リンクをクリックするとページは正常に読み込まれますが、1秒ほどするとブラウザが更新されてリダイレクトされます。結局、あなたはただ空白のページを手に入れました。また、赤目アイコンでクッキーをブロックしていました。

犯人は、Facebookのjavascriptlibをロードするjavascriptコードであることが判明しました。

FB.init({
            appId  : '<?=FACEBOOK_APP_ID?>',
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the session
            xfbml  : true  // parse XFBML
        });

この問題を解決するために、status:trueをstatus:falseに変更しました。リンクをクリックすると、ページが読み込まれ、更新されません。

ですから、ここで実際に何が起こっているのかはわかりませんが、推測があります...リダイレクトは、FB javavascriptがログインステータスをチェックし、何らかの理由でユーザーがログアウトしたと考えてログインページにリダイレクトしたことが原因でした。サーバー側のログインスクリプトは、実際にログインしたことを確認し、アプリにリダイレクトします。などなど。

したがって、IE7がiframe内に設定されたCookieを設定しないという問題は依然として存在し、邪眼は残ります。ただし、iframe内のリンクがFacebookのキャンバスページを指す親ウィンドウtarget = "_ top"を参照している限り、Cookieは必要ないようです。PHP SDKは、$_REQUESTで始まる多くの場所でセッションを検索します。Facebookがiframeをロードすると、クエリ文字列にセッションパラメータが含まれると思います。そのため、iframeを介してIE7でCookieが機能しない場合でも、サーバースクリプトはクエリパラメータからCookieを取得します。

それが何らかの意味をなすといいのですが、私はそれを完全には理解していませんが、それは私のアプリを修正しました。

于 2011-02-03T00:12:56.303 に答える
0

わかりませんが、これが役立つかもしれません。私のアプリでは魅力的でした。

header('P3P: CP="CAO PSA OUR"');
ob_start();
session_start();
于 2011-04-27T06:03:11.773 に答える