31

在阅读了以下问题(使用密钥 HTTP_AUTHORIZATION 而不是 Authorization 访问的 Ruby on Rails 中的 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']. 所以显然用连字符替换下划线是可行的,这看起来很奇怪。

4

1 回答 1

44

是的,它已经改变了Rails 4看看 Http::Headers 代码

现在自定义变量总是以HTTP_and开头_在您的变量中替换为-, CGI 变量除外。

高温高压

编辑:刚刚再次检查,-变量被替换_HTTP_. 在上面的链接中,检查line number 91-94

key = key.upcase.tr('-', '_')
于 2013-11-14T08:06:05.747 回答