今日作成したログインページが別のWebサイトによってiframeに埋め込まれてしまい、ログインできなくなりました(IEのみで発生しました)。
明らかに、セッションは保存できません。しかし、アドレスバーでログインページを直接開くと、すべてが正常です。おかしいですね。
ネットで調べてみました。多くの人がこの問題について言及していることがわかりました。最終的な解決策は、ログイン ページに次のコードを追加することです:
コードをコピーします コードは次のとおりです:
header ('P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"');
session_start();
おそらくこの問題は、JavaScript の場所を使用したログイン ページに関連していますジャンプ関連。しかし、詳細なテスト研究はありません。
以下は拡張読書です:
----------------------------------------------------- - ----
今日、Tencent Friends アプリケーションの作業をしていたとき、テスターから、アプリケーションが IE7 で使用できないという作業指示が届きました。
最初の反応は、セッションが切断されたというものでした。
そこで、IE7 での iframe セッション損失の問題をオンラインで検索したところ、次の記事を見つけて問題を解決しました:
================ ============ ===============
昨日、学校で作った時間日記がついにオンラインになりました。リリース初日には 80 人を超えるユーザーがこのアプリをインストールしましたが、多くのユーザーがアプリを利用できないと報告しました。私はFirefoxで開発していました(学校関係者も復習にFirefoxを使っていたようです) IE7でテストしたところ、ホームページ以外のページが正常に開けませんでした。
インターネットで多くの情報を検索したところ、IE7 にはこのような問題があることがわかりました。ページ内に 1 つ以上の iframe サブページがある場合、サブページでのセッションの作成が成功しない可能性があるため、セッション データが他の iframe と共有することはできません。学内や 51 のアプリケーションを開発する場合、iframe を使用することを前提とすると、このような問題に遭遇する可能性があります。そして、この問題は IE7 ブラウザーでのみ発生します。Firefox、IE6、Chrome ブラウザーでテストしましたが、問題はありませんでした。
解決策は次のとおりです: session_start を実行する前に、iframe サブページがセッションを作成するときに問題が発生しないように、ブラウザーにセキュリティ レベルを大まかに宣言するプログラム (PHP 言語を例にします) に次の文を追加します。 . :
header('P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"');
さらに、次のことも学びました: your_domain など、第 2 レベルのドメイン名にアンダースコアが含まれている場合.yourhost.com では、セッションの確立および通過時に問題が発生する可能性もあります。
いくつかの考え:
1) 何年も経った今でも、ブラウザの互換性の問題は完全に解決されておらず、IE ブラウザは依然として開発者に苦痛と苦痛を与えています。
2) アプリケーションをリリースする前に、厳密なブラウザ互換性テストを受ける必要があります。そうしないと、アプリケーションの最初のユーザーを失う可能性があります。
===============================================
その他の参考記事:
========================================== ====== ==
iframe で jsessionid を渡すことができず、セッションが失われる問題を解決します
http://618119.com/archives/2007/12/19/48.html
Sso はISMP2.1.1インターフェースを実装するために必要であり、ISMPで定義されたインターフェースはiframeなどの埋め込みページでssoインターフェースを呼び出す必要があることが実際の開発中に判明しました。
問題を再現するシナリオは次のとおりです:
1. 最初にサイトにアクセスします: http://192.168.18.2/test.jsp
test.jsp コードは次のとおりです:
コードをコピーします コードは次のとおりです。以下のように:
192.168.18.3/ sso.jsp?ssoinfo=xxxx ">/iframe>
sso.jsp で渡された ssoinfo を読み取り、ISMP 認証インターフェイスを逆に呼び出し、
セッションを生成し、指定された属性値を入力します
session .setAttribute("ssoUser", "lizongbo");
ページを再起動しますhttp://192.168.18.3/iframe.jsp にリダイレクトされます
response.sendRedirect(“/iframe.jsp”);
iframe.jsp はセッション内の ssoUser の属性値を読み取りますが、それができないことがわかります。読む。
2. 最初に 192.168.18.3 のページにアクセスし、次に 192.168.18.2 のページにアクセスすると、この時点で埋め込まれた iframe は生成された jsessionid Cookie を渡すことができます。 jsessionid.
たとえば、response.sendRedirect(“/iframe.jsp;jsessionid =lizongbo”); にリダイレクトします。この場合、iframe.jsp ページ内の他の接続の URL に jsessionid が追加されない場合、
セッションを渡し続けることも不可能ですが、クライアントのjs内の各ハイパーコネクションのhref属性を書き換えて、jsessionidを追加します
b.sso.jspにP3Pヘッダー情報を設定します
例: P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”
or P3P:CP=”CAO PSA OUR”
Java コードは:
response.addHeader(“P3P”,”/” CAO PSA OUR/””);
http://www.bkjia.com/PHPjc/824856.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/824856.html技術記事今日作成したログインページが別のWebサイトによってiframeに埋め込まれてしまい、ログインできなくなりました(IEのみで発生しました)。 当然、セッションは保存できません。でも、地面に直接…