Установить заголовок в apache, если он еще не существует

13

У меня есть прокси, который внедряет некоторые заголовки, но я хочу изменить его, чтобы он устанавливал заголовки только в том случае, если их еще нет:

<Location /api>    
    RequestHeader set MY_HEADER "value"

    ProxyPass http://127.0.0.1:8000/api
    ProxypassReverse http://127.0.0.1:8000/api
</Location>

Это возможно?

Hobozilla
источник

Ответы:

5

В Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

Я обнаружил, что это работает

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

работает весь день Однако, если кто-то пытается использовать динамическое значение,

RequestHeader setIfEmpty X-Forwarded-For "%{REMOTE_ADDR}e"

не работает. Я обнаружил, что вам нужна помощь mod_rewrite для сбора значения. Моя конфигурация теперь выглядит так, и она работает.

RewriteRule . - [E=noxff:%{REMOTE_ADDR}] RequestHeader setIfEmpty X-Forwarded-For "%{noxff}e"

Я знаю, что это глупо, но это работает.

Мауро Марзорати
источник
7

Как насчет чего-то вроде:

RequestHeader set X-My-Header "value" expr="req('X-My-Header')==''"

Обратитесь к http://httpd.apache.org/docs/current/expr.html для получения дополнительной информации о синтаксисе expr =.

Изменить: в Apache 2.2 вы должны быть в состоянии сделать это:

SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header
мМЕ
источник
Кажется, у меня есть некоторые проблемы с этим в Apache 2.2.24. Это просто 2.4 вещь?
Hobozilla
Кажется, не существует в Apache 2.2.
Майкл Хэмптон
Смотрите мои правки выше для Apache 2.2.
MLu
2
По какой-то причине ему не нравится "" как регулярное выражение, но, похоже, ^ $ добился цели.
Hobozilla
4

Apache 2.4.7

Header setifempty Access-Control-Allow-Origin "*"

Apache 2.2.4 ниже

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"
Kangur
источник