2

OK、これは絶望的です。見つけられるすべての修正を試みましたが、運がありませんでした。wordpress でセッション変数を使用していますが、Firefox を除くすべてのブラウザーで正常に動作します。キャッシュ、Cookie をクリアし、セーフ モードで起動しましたが、喜びはありません。Cookie が有効になっており、別の PC でも試しました。

次のように、テーマ関数ファイルでセッションを開始します。

function myStartSession() {
if(!session_id()) {
    session_start();
 }
}
add_action('init', 'myStartSession', 1);

次に、個々のページ テンプレートで、次のようにセッション変数を作成します。 $_SESSION['hq'] = 1;

sessionid がすべてのブラウザーで変更されず、Firefox を含めて正しく機能していることを確認できますが、FF ではセッション変数がページ間で正しく渡されず、結果は予測できません。

解決策/推奨事項は大歓迎です。

4

1 に答える 1

3

まったく新しい質問ではありませんが、解決策を探していてここにたどり着いたので、他のプログラマーを助けるために答えます。

私が開発した WordPress テーマで同様の問題があり、StackExchange のこの投稿で解決策を見つけました: https://wordpress.stackexchange.com/questions/40271/2-different-post-ids-for-single-page -Firefox でのみロードする

Firefox のプリフェッチにより、次の投稿/ページがバックグラウンドで読み込まれ、セッションがこの動作の影響を受けます。

これを修正するには、少なくとも 2 つの解決策があります。

  1. <head>次の関数呼び出しを使用して、ページ内に次のページ/投稿を挿入するアクションを削除します。

    remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
    

    テーマのfunctions.phpファイルに追加できます。

  2. 要求ヘッダーを確認して、プリフェッチを処理 (または無視) します。すべてのプリフェッチ要求は、次のように特別なヘッダーを付けてサーバーに送信されます。

    X-moz: prefetch
    

    このヘッダーを探して、リクエストを別の方法で処理できます。

于 2012-10-18T02:11:42.003 に答える