2012-01-20 4 views
0

私はJ2EE/JSFベースのWebアプリケーションを持っています。 フォーム入力、テキスト表示、カスタムサーブレットデータソースを持つGoogle Visualization APIを介してレンダリングされた視覚化で構成されています。どのようにしてSafariにCookieに保存されたセッションIDを使用させることができますか?

このページは、私が部分的に部分的に制御できるページの<iframe/>にレンダリングされています。

Chrome、Firefoxでは、アプリケーションはうまくいきます。 JSFが生成したセッションCookieを受け入れ、セッションIDをリクエストごとにサーバーに返します。 IEでは、ちょっと手を加えなければなりませんでしたが、すべての点でうまくいきました。

しかし、Safari(5.1.2/Windows XP)では、セッションIDが非標準のURLパラメータ(;jsessionid=...)として送信されます。結果として、サーブレットデータソースへのクエリにはセッションIDは含まれず、データソースへのすべての要求に対して新しいセッションが作成されます。

これは、視覚化が初期状態で止まってしまいます。

私はブラウザの別のJavaScriptエンジンで原因を疑うが、その疑いはほとんどない。

私は何とかSafariにすべてのリクエストにセッションIDを追加させることができますか?さらに、すべてのリクエストにクッキーを使用することができますか?

更新: Googleの「クエリ」オブジェクトによって実行された呼び出しにセッションIDを追加しようとしましたが、失敗しました。この

new google.visualization.Query('chartdata?randomBitToBypassCaching='+random+";jsessionid="+jsessionid); 

のように呼ばれると は、要求されたURLは、そのクエリは、IDの議論の余地を転送する私の試みをレンダリングするURLへtqx -parameterを追加し

http://localhost:8083/myapp/chartdata?randomBitToBypassCaching=1327312516149;jsessionid=9fdb20a75d30f000c063317997b5&tqx=reqId%3A0 

注意。

更新2:URLにjsessionidを転送するには、パラメータの前に追加することをお勧めします。

答えて

0

は最後に、私は、URLパラメータとしてセッションIDを転送し、標準記法残念ながら;jsessionid=...?...

を使用して要求をリダイレクトサーブレットフィルタを実装し、単にクエリ文字列にセッションIDを追加する -前その他のパラメータ - 動作しませんでした:

new google.visualization.Query('chartdata;jsessionid="+jsessionid?randomBitToBypassCaching='+random+"); 
関連する問題