【发布时间】:2013-07-04 02:44:51
【问题描述】:
我正在尝试使用 Rack Middleware 设置一个 cookie 并在相同的请求-响应周期中发送一个有效 cookie 的响应。
这里是上下文:我正在开发一个具有两种模式的网站:美国模式和英国模式(不同的徽标、导航栏、样式等)。当英国访问者第一次访问该页面时,我想在他的浏览器上设置一个“英国模式”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 才会生效并且英国访问者会看到英国模式。
有没有人知道在一个请求-响应周期中同时设置 cookie 并返回一个有效 cookie 的响应?
【问题讨论】:
标签: ruby-on-rails rack rack-middleware