Ruby on Rails のプラグイン jpmobile を利用して携帯サイトを作成したところ、trans_sid 機能を使っていても DoCoMo の携帯でアクセスするとセッションIDが変わってしまい、セッションデータが維持できない。
プログラミングその他に関する質問と回答
Ruby on Rails のプラグイン jpmobile を利用して携帯サイトを作成したところ、trans_sid 機能を使っていても DoCoMo の携帯でアクセスするとセッションIDが変わってしまい、セッションデータが維持できない。
fumiu says:
以下のページに原因と解決策がある。
http://blog.t-4u.net/web/tag/14/article/105
簡単に抜粋すると、plugin/jpmobile/lib/jpmobile/trans_sid.rb の内容を以下のように変更(10行目)する。
変更前
module ParamsOverCookie def self.included(base) base.class_eval do # cookie よりも params を先に見るパッチ def load_session_with_jpmobile(env) request = Rack::Request.new(env) unless @cookie_only sid = request.params[@key] end sid ||= request.cookies[@key] # ここでsidがnil sid, session = get_session(env, sid) [sid, session] end alias_method_chain :load_session, :jpmobile end end end変更後
#sid ||= request.cookies[@key] sid = sid || request.cookies[@key] || request.params[@key]2010年3月25日, 1:58 PM