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

Apache - добавьте заголовки http к запросам, используя скрипт (bash, perl, php и т. Д.), Чтобы установить заголовки

Я пытаюсь выяснить осуществимость проекта, в котором я хочу иметь возможность запускать скрипт для каждого запроса (предпочтительно отфильтрованного по типу mime), и запускать скрипт для установки заголовков для ответа.

В основном я хочу, чтобы запросы для документов text / html и application / json имели заголовки http с произвольными данными, сгенерированными системой (фактические добавленные заголовки будут git branch и commit hash info).

Это для локальных и промежуточных веб-серверов, поэтому влияние на производительность не является большой проблемой.

Я исследовал mod_ext_filter с помощью сценариев bash, и хотя я мог успешно вводить строки в вывод, я не мог получить доступ к заголовкам (я полагаю, они уже были отправлены?)

Могу ли я изучить другие варианты?

Моя попытка до сих пор (в vhost):

    ExtFilterDefine githeaders mode=output \
                   cmd="/bin/bash /path/to/script/git_headers.sh" preservescontentlength

   <Location />
     SetOutputFilter githeaders
   </Location>

Эхо для тестирования базового сценария bash

#!/bin/bash

echo "hello"

cat

Вышеупомянутое работает нормально, вставляя привет в ответы, но я не могу понять, как изменить заголовки. Любая помощь / предложения приветствуются.

Примеры, которые я видел, обычно используют mod_headers для вставки, удаления или замены заголовков, как в примере ниже из руководства.

# mod_ext_filter directive to define the external filter
ExtFilterDefine gzip mode=output cmd=/bin/gzip

<Location /gzipped>
# core directive to cause the gzip filter to be
# run on output
SetOutputFilter gzip

# mod_header directive to add
# "Content-Encoding: gzip" header field
Header set Content-Encoding gzip
</Location>

Я могу только предположить, что, используя обычный API и написав фильтр на C, вы получите больший доступ и сможете изменять заголовки.