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

Измените подчеркивание на тире в заголовке Apache

У меня есть приложение, работающее под управлением 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. Документация не позволяет легко понять это.