для установки 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

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

1
задан 24 June 2016 в 18:23
2 ответа

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

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

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

How are you testing the header has been set?

.
1
ответ дан 3 December 2019 в 23:44

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

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

.
0
ответ дан 3 December 2019 в 23:44

Теги

Похожие вопросы