我有 Apache 作为代理运行,我想将 cookie 字符串记录为通过代理发出的请求的一部分,但我有一些我想排除的 cookie,因为它们包含敏感信息。
我知道 Apache mod_log_config 允许使用以下命令记录整个 cookie 字符串:
%{Cookie}i
我可以使用以下命令记录一个特定的 cookie:
%{Foobar}C
但我想记录除某些 cookie 之外的所有内容(如果存在)。我尝试的一种可能的策略是使用 SetEnvIf 与 %{FOO}e 结合使用,它会打印一个环境变量,例如:
SetEnvIf = Cookie "(.*?)(Foobar=([^\s;]*;? ?))?(.*)" FILTERED_COOKIES=$1$4
和
%{FILTERED_COOKIES}e
如果 Foobar 存在于 cookie 字符串中,这很有效,但如果 Foobar 不存在,如果只记录一个“-”,那么我不会得到所有其他 cookie。
我的正则表达式可能很差,但它似乎在匹配的情况下工作,但 Apache 在不匹配的情况下似乎没有正确处理它。
除了编写自定义 Apache mod,有没有办法排除 cookie 被记录?