У меня есть прокси-сервер, который вводит некоторые заголовки, но я хочу изменить его, чтобы он устанавливал только заголовки, если они еще не присутствуют:
<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 "^$" "*"