使用nginx+passenger时丢失自定义http标头

inn6fuwd  于 2022-11-02  发布在  Nginx
关注(0)|答案(4)|浏览(238)

我正在尝试添加一些自定义的http标头,用于从移动的客户端进行身份验证,例如
{'移动密钥' =〉'xxx','移动签名' =〉'yyy'}
当我在开发中使用webrick/thin/mongrel时,它工作得很好,但是当我用nginx+passenger将它部署到生产服务器时,自定义头文件被删除了,为什么?我该怎么做?

2hh7jdfx

2hh7jdfx1#

nginx中有一个指令,它说忽略名称中带有“_”的头。
http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers
这对我很有帮助,但是重写你的软件来使用X格式可能会更好。

fykwrbwg

fykwrbwg2#

尝试为自定义头文件使用X样式命名。我在传递名为“device_id”的头文件时遇到了这个问题。它会在nginx/Passenger层的某个地方被剥离。我怀疑它是Passenger,但不确定。
我将头文件改为“X-device-id”,然后我就可以在Rails控制器中使用这个头文件,即request.headers ['X-device-id']。

ltqd579y

ltqd579y3#

您需要执行两项操作:
1.请确保所有令牌都以“X-”开头
例如:“X-your-token”
1.配置nginx以传递此令牌:
代理传递报头X-移动接入令牌;

xqnpmsa8

xqnpmsa84#

以防万一,我遇到了与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

相关问题