为什么我更新到 rails 4.2.0 后无法阅读 headers

Why cant I read headers after updating to rails 4.2.0

我最近升级到 Rails 4.2.0 的应用程序。在这个应用程序中,我请求一个小 API 的访问令牌。在 API 控制器中,我试图获取此令牌。我正在使用 POSTman 进行测试,向我的本地机器发送请求,运行将其与开发或生产完美结合。向 nginx phusion passenger 服务器发送请求没有任何结果,根据日志,令牌为 nil。

POSTman 请求

headers: access_token: '12345'

API 控制器

@access_token = request.headers['HTTP_ACCESS_TOKEN']

当我在某处阅读时,headers 以 http 前缀全大写读取 - 我现在似乎找不到,这是正确的设置。我的 rails 3.2 应用程序过去常常读取没有前缀 headers 的小写字母,并且可以正常工作。升级到 4.2.0 后,此功能在本地失效。添加前缀和大写 read-in 解决了开发和生产模式下的本地问题。但是,一旦部署,headers 似乎总是为零。

因为我可以在生产模式下在本地 运行 并且这有效,所以我很难弄清楚部署后会发生什么。这是 nginx 还是 passenger 的问题?我是 nginx 的新手,我在这里遗漏了什么吗?您能提供的任何帮助将不胜感激。

在具有 CGI 接口的 Web 服务器上使用 rails 时,这些 Headers 会被 Apache 或 NGIX 删除。 这是一个遗留问题。 ACCESS-TOKEN 和 ACCESS_TOKEN 将映射到相同的 CGI 变量 'access_token'。 由于破折号在 header 中更常见,因此忽略下划线。