У меня есть приложение, работающее под управлением 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
установлен, поэтому я не совсем понимаю, что происходит. Какие-либо предложения?
Спасибо!
Ценность RequestHeader set
поддерживает выражения, а выражения включают req
(или http
), которая дает вам значение заголовков запроса. Итак, эта директива должна делать то, что вы хотите:
RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"
Вы должны глубоко погрузиться в документация найти такие вещи, но они есть.
Не уверен, почему ваша конфигурация не сработала, но я предполагаю, что SetEnvIfNoCase оценивается после RequestHeader. Документация не позволяет легко понять это.