Назад | Перейти на главную страницу

установить RequestHeader на сервере apache httpd не работает

У меня есть требование, где мне нужно установить RequestHeader со значением, полученным из строки запроса URI.

Принятый подход заключается в написании RewriteCond и ReWriteRule где условием является извлечение стоимости из %{QUERYSTRING} переменную и установите ее в другую переменную среды, а затем обратитесь к ней и добавьте ее в заголовок запроса.

Но, похоже, это не работает для меня. Я использую Apache 2.2 на RHEL.

Моя конфигурация httpd, помещенная в один из файлов .conf, выглядит следующим образом.

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule . - [E=RU:%1]
Header set "X-Header" "%{RU}e" env=RU

НОТА: Я также попытался установить заголовок запроса, жестко закодировав значение, и у меня также включен прокси-модуль.

RequestHeader set X-User-ID "test"
Header append X-test %{RU}e
RequestHeader set X-UserID %{RU}e early

Использование «раннего» варианта тоже не помогло.

В исходной конфигурации вы используете Header вместо того RequestHeader. Header устанавливает заголовок ответа, а не заголовок запроса.

Я протестировал его, добавив запись HTTP-заголовка X-header в формат журнала доступа, и он отлично работает. Единственное, что я изменил, - это расширение. к ^ в RewriteRule

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^ - [E=RU:%1]
RequestHeader set "X-Header" "%{RU}e" env=RU

Как вы тестируете заголовок был установлен?

Судя по вашему последнему комментарию, похоже, вы пытаетесь установить переменную среды, которая выдерживает внешние перенаправления. Это невозможно сделать с переменными среды или заголовком запроса, поскольку они ограничены для каждого запроса. Однако вы можете сделать это, установив файлы cookie в RewriteRules с помощью флага CO.

Решение, предложенное @Unbeliever, лучше всего работает, когда вы хотите, чтобы переменные среды выдерживали внутренние перенаправления, выполняемые Apache mod_rewrite. Имейте в виду, что настраиваемый заголовок не может быть немедленно доступен для оценки.