在Ruby on Rails中访问自定义标头变量

在阅读了下面的问题( Ruby on Rails中的授权标题,使用密钥HTTP_AUTHORIZATION而不是授权进行访问? )我遇到了与OP类似的问题,但建议的答案似乎并没有解决我的问题。

我在调用本地托管服务器(通过Postman)时定义了一个自定义标头:

@Igor:我实际上使用Postman,所以我只是添加了curl代码来演示我做了什么。 我想最好包含一个截图:

在此处输入图像描述

这是我的控制器中的代码,它试图读取所述标题:

def authenticate_through_header custom_header_value = request.headers['custom_header'] end 

但是,这个回报nil 。 另一方面, request.headers['HTTP_CUSTOM_HEADER']返回值。 根据我最初链接的问题,我应该能够通过在括号[]中传递名称来获取值 – 这是在较新的Rails版本中已经更改的内容吗?

干杯:-)

更新 :它还可以通过以下方式访问变量: request.headers['custom-header'] 。 所以显然它可以用连字符替换下划线,这似乎很奇怪。

是的,它已经在Rails 4发生了变化。 看一下Http :: Headers代码 。

现在,自定义变量总是以HTTP_ 你的变量中的_被替换为- , CGI变量除外。

HTH

编辑:再次检查, -变量被替换为_并以HTTP_为前缀。 在上面的链接中,检查line number 91-94

 key = key.upcase.tr('-', '_')