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

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

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

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

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

В 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"

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

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

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.4.7

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

Apache 2.2.4 ниже

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"