потерян пользовательский заголовок http при использовании nginx + passenger - PullRequest
4 голосов
/ 07 мая 2011

Я пытаюсь добавить несколько пользовательских HTTP-заголовков для аутентификации с мобильного клиента, например

{'MOBILE_KEY' => 'xxx', 'MOBILE_SIGNATURE' => 'yyy'}

когда я работаю с webrick / thin / mongrel в разработке, он работает нормально, но когда я развернул его на производственном сервере с помощью nginx + passenger, пользовательские заголовки были удалены, почему?и что я могу сделать?

Ответы [ 4 ]

9 голосов
/ 11 июля 2012

В nginx есть директива, в которой говорится игнорировать заголовки с '_' в имени.

http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers

Это помогло мне, но переписывание вашего программного обеспечения для использования формата X может быть даже лучше.

2 голосов
/ 03 июня 2011

Попробуйте использовать именование в стиле X для своих пользовательских заголовков. Я столкнулся с этой проблемой при передаче заголовка с именем «device_id». Это будет удалено где-нибудь в слое nginx / Passenger. Я подозреваю, что это был Пассажир, но не уверен.

Я изменил заголовок на «X-device-id», и тогда этот заголовок был доступен мне в моем контроллере Rails как request.headers ['X-device-id'].

0 голосов
/ 04 июля 2016

На тот случай, если у меня возникла точно такая же проблема с 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
0 голосов
/ 16 января 2012

Вам нужно будет сделать две вещи:

  1. Убедитесь, что все ваши токены начинаются с "X -"

    пример: "X-your-token"

  2. Настройте nginx для передачи этого токена через:

    proxy_pass_header X-mobile-access-token;

...