Apache-2.2 Set-Cookie来自响应头的逻辑

时间:2017-05-04 17:56:22

标签: apache mod-rewrite apache2.2

我需要根据响应标头(而不是请求标头)设置cookie。响应头是由对后端的SOAP调用设置的 - 并且不在apach控制之下。

我查看了SetEnvIf,但它声明它只调查请求标头。 mod_rewrite的{HTTP:parm}构造似乎也只适用于请求头。

  1. 请求进入
  2. 响应标头由后端生成
  3. Apache调查回复标题FooBar
  4. 如果响应标头FooBar值与“string”匹配,则Apache添加Set-Cookie
  5. 有任何想法吗?

1 个答案:

答案 0 :(得分:0)

looks like this can be donemod_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直接转到后端。

希望这些想法有所帮助。