Apache - 向请求添加 http 标头,使用脚本(bash、perl、php 等)设置标头

Apache - 向请求添加 http 标头,使用脚本(bash、perl、php 等)设置标头

我正在尝试找出一个项目的可行性,我希望能够在每次请求时运行一个脚本(最好按 mime 类型过滤),并运行一个脚本来设置响应的标头。

基本上,我希望对 text/html 和 application/json 文档的请求具有包含系统生成的任意数据的 http 标头(添加的实际标头将是 git 分支和提交哈希信息)。

这是针对本地和暂存网络服务器的,因此性能影响不是一个大问题。

我已经使用 bash 脚本研究了 mod_ext_filter,虽然我可以成功地将字符串注入输出,但我无法访问标题(我认为它们已经被发送了?)

还有其他我可以研究的选项吗?

我迄今为止的尝试(在vhost中):

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

   <Location />
     SetOutputFilter githeaders
   </Location>

基本 bash 脚本测试 echo

#!/bin/bash

echo "hello"

cat

上面的方法运行良好,将 hello 注入响应中,但我不知道如何更改标头。如有任何帮助/建议,我们将不胜感激。

答案1

我见过的例子通常使用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 编写过滤器,您可以获得更多访问权限并能够修改标题。

相关内容