我正在尝试添加一些自定义 http 标头以用于移动客户端的身份验证,例如
{'MOBILE_KEY' => 'xxx', 'MOBILE_SIGNATURE' => 'yyy'}
当我在开发中使用 webrick/thin/mongrel 时,它工作正常,但是当我使用 nginx+passenger 将其部署到生产服务器时,自定义标头被删除,为什么?我能做什么?
nginx
中有一个指令,表示忽略名称中带有“_”的标头。
http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers
这对我很有帮助,但是重写你的软件以使用 X 格式可能会更好。
尝试为您的自定义标头使用 X 样式命名。 我在传递名为“device_id”的标头时遇到了这个问题。 它会在 nginx/Passenger 层的某个地方被删除。 我怀疑是乘客,但不确定。
我将标头更改为“X-device-id”,然后我可以在 Rails 控制器中使用该标头作为 request.headers['X-device-id']。
您需要做两件事:
X-
example: "X-your-token"
proxy_pass_header X-mobile-access-token;
以防万一我对 Apache (httpd-service) + Passenger 遇到完全相同的问题,就像你们所有人一样,我所要做的就是将“access_token”更改为“access-token” 来自
curl --header "access_token:MnRj6qCefRc8NuYzcBvhUvRreEGVvxh9yuNe0XcOIoEA==" --data "uuid=cef8dfa1ae6cab68d8bd47e8137707ee" http://localhost/website/transactions/pull-latest
到
curl --header "access-token:MnRj6qCefRc8NuYzcBvhUvRreEGVvxh9yuNe0XcOIoEA==" --data "uuid=cef8dfa1ae6cab68d8bd47e8137707ee" http://localhost/website/transactions/pull-latest