Я пытаюсь выяснить осуществимость проекта, в котором я хочу иметь возможность запускать скрипт для каждого запроса (предпочтительно отфильтрованного по типу 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, вы получите больший доступ и сможете изменять заголовки.