我正在尝试找出一个项目的可行性,我希望能够在每次请求时运行一个脚本(最好按 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 编写过滤器,您可以获得更多访问权限并能够修改标题。