我需要根据响应标头(而不是请求标头)设置cookie。响应头是由对后端的SOAP调用设置的 - 并且不在apach控制之下。
我查看了SetEnvIf,但它声明它只调查请求标头。 mod_rewrite的{HTTP:parm}构造似乎也只适用于请求头。
有任何想法吗?
答案 0 :(得分:0)
looks like this can be done与mod_headers,但不幸的是只有Apache 2.4,因为表达式仅在2.4中添加。你可以这样做:
Header set Set-Cookie "cookie-contents-here" "expr=%{resp:Content-Type} =~ m|application/pdf|"
如果您无法升级到2.4,可以考虑将Varnish Cache放在Apache安装的前面。它是一个功能强大的HTTP处理器,可以轻松处理为您修改响应。您还可以使用它实现缓存并提高站点的性能,但如果您不想这样做,它只能用作传递HTTP处理器。也许有一个更简单的解决方案,但这样可行。
另一个选择可能是在Apache和后端之间放置一个层,例如PHP脚本,它处理将调用传递给后端并在退出的路上修改头。虽然可能不是很好的表现;升级Apache或实现Varnish Cache会更好。
如果您使用Apache控件的单独后端,那么您可以完全将Apache从循环中取出并从Varnish Cache直接转到后端。
希望这些想法有所帮助。