1

Rack Middleware を使用して Cookie を設定し、同じ要求応答サイクルで有効な Cookie を使用して応答を送信しようとしています。

コンテキストは次のとおりです。私は、米国モードと英国モード (異なるロゴ、ナビゲーション バー、スタイルなど) の 2 つのモードを持つ Web サイトで作業しています。英国の訪問者が初めてそのページにアクセスしたときに、ブラウザに「英国モード」の Cookie を設定するだけでなく、ページの英国バージョンもレンダリングしたいと考えています。これまでの私のコードは次のとおりです。

 # middleware/geo_filter_middleware.rb

 def initialize(app)
   @app = app
 end

 def call(env)
   status, headers, body = @app.call(env)
   response = Rack::Response.new(body, status, headers)
   if from_uk?(env)
      response.set_cookie('country', 'UK')
   end
   response.to_a
 end

英国の訪問者が初めてページにアクセスすると、Cookie に「英国モード」が設定されますが、ページのデフォルトの米国バージョンが表示されます。Cookie が有効になり、英国の訪問者に英国モードが表示されるのは、2 番目の要求の後でのみです。

Cookie を同時に設定し、1 つの要求応答サイクルで有効な Cookie を使用して応答を返すというアイデアはありますか?

4

1 に答える 1