Встановіть заголовок в 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>

Чи можливо це?

Відповіді:


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

Здається, у мене є деякі проблеми з цим в апачі 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 "^$" "*"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.