jFD開発したりしなかったり日誌
2008-08-01 [長年日記]
_ 仕事
謎現象発生。
アプレットの起動時にブラウザで保持しているクッキーのJSESSIONIDをパラメータとして受け取って、
アプレット内でセッションを引き継いでサーバーにリクエストを投げ、その後で
JavaScriptからサーバーにリクエストを投げる、というのをやっていた。
当然同一のセッションになると思いきや、ブラウザ起動後一回目に限ってそうならない。
泣きそうになりながら調査をしたら、不思議な現象がわかった。
アプレットはCommonsのHttpClientでサーバーにデータを送信してるのだが、
HttpClientをnewした時点で、ブラウザが持ってるJSESSIONIDが変わっている。
このため、データ送信後のリクエストでは別のJSESSIONIDがサーバーに送られていて、
参照するセッションが異なってしまい、想定した動作がされてなかった。
なんだこりゃ。
どういう理由でそうなるのかさっぱりわかってないが、対策としてHttpClientをnewした後で
JSObjectを使ってクッキーを取得し直し、現在のJSESSIONIDを使ってサーバーに
リクエストを投げるようにした。
なぜそうなるのかわかららないけど、とりあえず想定した動作はするようになったか。
_ えー
所用で空手部長に電話したら、研修中の新入社員がわからないところがあるんで
質問に答えてあげて欲しい、とのこと。
さんざんお世話になった人だし快諾したんだけど、ソースを口頭で説明されてもわからないんで
「メールで送ってきて」とメアドを教えたのに、このブログのツッコミに書き込むのはあんまりですよ。
ある意味スパムよりたち悪いですってば。
[ツッコミを入れる]
[TrackBack URL: https://starseed.ne.jp/ikemen/diary/tdiary/tb.rb/20080801]
本日のリンク元
その他のリンク元
検索
- キーワード不明 ×4 / httpclient jsessionid ×2 / ブラウザ アプレット COOKIE 引き継ぐ ×1 / appletで jsessionid 取得 ×1 / applet JSESSIONID ×1 / HttpClient JSESSIONID ×1 / HttpClient jsessionid ×1 / php http_client セッションを引き継ぐ ×1 / rapid ×1 / applet cookie 引き継ぎ ×1 / applet jsessionid ×1 / JSObject sessionid 取得 ×1 / httpclient jsessionid 送信 ×1 / httpclient jsessionid リクエスト ×1 / Applet JSESSIONID ×1 / アプレット セッション データ 取得 ×1 / applet jsessionid 取得 ×1 / ブラウザ & sessionID & 引き継ぎ ×1