我正在运行带有PhusionPassenger和NGINX的Rails 3.1。我通过一个简单的HttpClient(OS X的GrahpicalHttpClient)发送请求。我的代码需要标头中的标记和ID来验证调用者的真实性。在开发模式下,这没有问题,但是一旦我将其转移到生产中,标题变量就会丢失。没有显示任何内容。
以下是代码:
@caller = Person.check_authentication_token(request.headers['person_id'], request.headers['authentication_token'])
如果任一变量为nil,则check_authentication_token方法返回nil。正如我所说,这在开发中工作得很好但是request.headers ['person_id']和request.headers ['authentication_token']在生产中都是零。有没有人以前见过这个问题?
答案 0 :(得分:13)
Nginx默认会将请求标头中的下划线视为无效并随后将其删除,请参阅http://wiki.nginx.org/HttpCoreModule#underscores_in_headers了解如何解决此问题。