ruby-on-rails-3 – Rails 3中间件修改请求标头

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – Rails 3中间件修改请求标头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的设置:Rails 3.0.9,Ruby 1.9.2

我正在处理我的第一个中间件应用程序,似乎所有的例子都处理修改响应.我需要特别检查和修改请求标题,删除一些引起Rack 1.2.3中的错误的违规标题.这是典型的hello world Rack应用程序.

my_middleware.rb

class MyMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    @status,@headers,@response = @app.call(env)
    [@status,@response]
  end
end

有人有一个例子来处理请求人员,并在Rack掌握之前拦截它们吗?我需要修改请求头,然后才能获取到Rack进行解析.我有这个设置,认为把它放在机架之前可能会做这个伎俩,但我不知道执行顺序是否以这种方式执行.

application.rb

config.middleware.insert_before Rack::Lock,"MyMiddleware"

解决方法

在你的调用方法中,你应该可以修改env,这就是机架环境.机架将HTTP_添加到每个标题,因此Accept标头将通过env [‘HTTP_ACCEPT’]访问.

所以如果你需要删除某些标题,你应该能够像env.delete(‘HTTP_ACCEPT’)这样做.那么当你做了@ app.call(env),它会使用你修改的env.

有关env对象的更多信息,请参阅the Rack documentation(请参阅“环境”).

猜你在找的Ruby相关文章