Подтвердить что ты не робот

Изменить заголовки запроса промежуточного программного обеспечения Rails 3

Моя настройка: Rails 3.0.9, Ruby 1.9.2

Я работаю над своим первым программным обеспечением промежуточного программного обеспечения, и кажется, что все примеры касаются изменения ответа. Мне нужно изучить и изменить заголовки запросов, в частности, удалить некоторые заголовки, которые вызывают ошибку в Rack 1.2.3. Здесь типичное приложение для приложений Rack World приветствия.

my_middleware.rb

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

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

Есть ли у кого-нибудь пример, который обрабатывает заголовки запросов и перехватывает их, прежде чем Rack справится с этим? Мне нужно изменить заголовки запросов до того, как они попадут в Rack for parsing. У меня есть эта настройка, и я думаю, что поставить ее перед тем, как Rack может сделать трюк, но я не уверен, что порядок исполнения выполняется таким образом.

application.rb

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

Ответ 1

В вашем методе call вы можете изменить env, который является средой Rack. Rack добавляет HTTP_ к каждому заголовку, поэтому заголовок Accept будет доступен через env['HTTP_ACCEPT'].

Итак, если вам нужно удалить определенные заголовки, вы должны сделать что-то вроде env.delete('HTTP_ACCEPT'). Затем, когда вы сделаете @app.call(env), он будет использовать ваш измененный env.

Подробнее о объекте env см. документацию в стойке (см. "Окружающая среда" ).