IE、FF、Safari、および Chrome で正常に動作する、glassfish 3.1 で実行されている JSF 2.0 Web アプリケーションがあります。
別の Web サイトの iframe 内に自分の Web サイトの URL を追加すると、iframe 内の任意のボタンをクリックすると ViewExpiredException が発生します - これは Safari でのみ発生し、IE、FF、Chrome で正常に動作します。
<iframe style="width: 100%; height: 800px" src="url_of_my_website" frameBorder="0"></iframe>
以下は私の観察です
- 同じアプリケーションを Glassfish 3.0.1 にデプロイしましたが、問題は発生しません
- フレームなしでウェブサイトを開くと、ブラウザに関係なく正常に動作します
- JSF1.2 と RF 3.3.3 を使用して同じアプリケーションを開発しましたが、問題は発生しません。
私の理解によると、セッションが期限切れになっているページでアクションが実行されると、 ViewExpiredException が発生します。ただし、この特定のケースでは、Web サイトがロードされた直後に発生します。
何が原因なのかわかりません。Safari/JSF 2.0/GF 3.1/IFRAME ですか?
更新: 興味深い問題が見つかりました。私のホームページには、新しいページにリダイレクトする ah:commandLink があります。また、他のページにリダイレクトするための href リンクがあります。commandLink をクリックすると ViewExpiredException が発生しますが、href リンクをクリックすると例外が発生せず、ページがリダイレクトされ、セッション Cookie が確立されているため、さらに操作を続行できます。