在阅读了以下问题(Authorization header in Ruby on Rails accessed with key HTTP_AUTHORIZATION instead of 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']
。所以显然它可以用连字符替换下划线,这似乎很奇怪。
答案 0 :(得分:42)
是的,Rails 4
已更改。 Take a look at the Http::Headers code
现在自定义变量总是以HTTP_
为前缀,变量中的 ,CGI variables除外。_
替换为-
HTH
编辑:刚刚检查过,-
变量中的_
已替换为HTTP_
,并且前缀为line number 91-94
。在上面的链接中,选中key = key.upcase.tr('-', '_')
:
{{1}}