
У меня есть приложение, работающее на Apache 2.4.27, которое аутентифицирует пользователей с помощью mod_auth_cas. Этот модуль хранит атрибуты аутентифицированного пользователя в заголовках. У меня возникли проблемы с одним заголовком, который удаляется, поскольку в нем есть подчеркивание ( X-CAS-email_primary
). После некоторых поисков я добавил приведенный ниже фрагмент кода в конфигурацию VirtualHost.
SetEnvIfNoCase X-CAS-email_primary ^(.*)$ fix_header=$1
RequestHeader set X-CAS-email-primary %{fix_header}e env=fix_header
Если это не очевидно, я пытаюсь изменить X-CAS-email_primary
на X-CAS-email-primary
. Этот код частично работает. Новый заголовок появляется, но он не имеет значения.
["HTTP_X_CAS_EMAIL_PRIMARY"]=> string(0) ""
Я подтвердил, что это X-CAS-email_primary
установлено, поэтому я не совсем уверен, что происходит. Есть предложения?
Спасибо!
решение1
Значение a RequestHeader set
поддерживает выражения, а выражения включают функцию req
(или http
), которая дает вам значение заголовков запроса. Так что эта директива должна делать то, что вам нужно:
RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"
Вам нужно глубоко вникнуть в сутьдокументациянайти что-то подобное, но оно есть.
Не уверен, почему ваша конфигурация не сработала, но, полагаю, SetEnvIfNoCase оценивается после RequestHeader. Документация не позволяет легко это выяснить.