Подчеркивание Apache в заголовке перезаписывается

У меня есть служба, которая устанавливает заголовок x-user_type. Поскольку Apache2.4.33 не может использовать это, я преобразую это следующим образом в .htaccess:

<IfModule mod_headers.c>
    <IfModule mod_setenvif.c>
        SetEnvIfNoCase ^x.user.type$ ^(.*)$ fix_x-user_type=$1
        RequestHeader set x-user-type %{fix_x-user_type}e env=fix_x-user_type
    </IfModule>
</IfModule>

Но если я предоставлю x-user-type в запросе, тогда значение для x-user-type в ответе будет перезаписано

Примеры:

  • Ничего не предоставлено -> x-user-type = application (устанавливается службой)
  • x-user_type = test -> x-user-type = application (Это нормально, поскольку устанавливается службой)
  • x- user-type = test -> x-user-type = test (Это тоже должно быть приложение)

Я думаю, что это проблема конфигурации apache. Может ли кто-нибудь помочь мне решить эту проблему?

2
задан 4 October 2018 в 12:10
1 ответ

Исправил мою проблему с этим: https://serverfault.com/a/900745/490242

Цитата:

Значение набора RequestHeader поддерживает выражения, а выражения включают функцию req (или http), которая дает вам значение заголовков запроса. Итак, эта одна директива должна делать то, что вы хотите:

RequestHeader set X-CAS-email-primary "expr =% {req: X-CAS-email_primary}" Вы должны углубиться в документацию, чтобы найти такие вещи, но они есть.

Не уверен, почему ваша конфигурация не сработала, но я предполагаю, что SetEnvIfNoCase оценивается после RequestHeader. Документация не позволяет легко понять это.

Похоже, SetEnvIfNoCase тоже была моей проблемой.

2
ответ дан 3 December 2019 в 11:25

Теги

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