Я надеюсь, что кто-то сможет что-то прояснить для меня. Я использую Rails 2.3.5, и я могу получить доступ к заголовкам запроса в действии контроллера следующим образом:
def index
if request.headers['...'] == '...'
...
end
end
Или что-то подобное. request.headers - это экземпляр ActionController:: Http:: Headers, который выглядит как хэш. Поэтому я ожидал бы, что заголовки будут введены на имя, которое я отправляю. Если я отправляю запрос, но с заголовком Authorization, например:
curl -H 'Authorization: OAuth realm="MyRealm",...' http://app/path
Следующий код в действии возвращает false:
if request.headers.include?('Authorization') ...
В то время как следующее эхо-сообщение выдает значение, которое я посылаю в заголовке:
render :text => request.headers['Authorization']
Следующая проверка возвращает true, достаточно интересно:
if request.headers.include?('HTTP_AUTHORIZATION') ...
И аналогичным образом, следующее отгоняет значение, которое я отправляю в заголовке:
render :text => request.headers['HTTP_AUTHORIZATION']
Кажется, что есть какая-то магия, о которой я не знаю. Я совершенно смущен тем, почему проверка ключа "Авторизация" терпит неудачу, но получение значения request.headers ['Authorization'] преуспевает. Я также смущен относительно того, откуда происходит "HTTP_AUTHORIZATION", поскольку это не имя заголовка, который я отправляю с запросом. Кто-нибудь знает, что именно происходит?