您如何有条件地更改Set-Cookie标头?

时间:2019-07-15 19:11:41

标签: apache cookies header

我的代理后面的服务器发回一个Set-Cookie(响应)标头,我想更改它。我要为此添加path=/

Set-Cookie: DMZSID=none; HttpOnly; Expires=Thu, 01 Jan 1970 00:00:00 GMT

所以:

Set-Cookie: DMZSID=none; HttpOnly; path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT

有时,此标头也通过代理传递:

Set-Cookie: DMZSID=somethingImportant; HttpOnly; path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT

因此,根据我的经验不足,有两种选择:

当cookie被称为DMZSID时,始终设置path = /

这似乎是最简单的选择。我可能会尝试使用Header merge Set-Cookie path=/ env=someVariable,但我不知道如何设置SetEnvIf来触发正确的cookie名称。

检查DMZSID = none并添加路径= /

我可能会再次使用merge添加path=/位,但是同样,我也不知道如何设置SetEnvIf条件来触发。

那么当它包含path=/时,如何更改此响应标头以始终包含DMZSID

1 个答案:

答案 0 :(得分:0)

好吧,我发现一种更简单的方法,就是发现可以在Apache的letters中使用PCRE。简单地说,就是这样:

Header edit

这将编辑Header edit Set-Cookie "(^DMZSID=none;\s?HttpOnly;\s?)(.*)" "$1path=/; $2"标头。首先,它精确捕获“ DMZSID = none; HttpOnly;”,在属性之间使用0或1空格。之后,它将捕获其余部分。然后只需将其替换为Set-Cookie + contents of group 1 + path=/;,您将得到:

contents of group 2

通过在最后添加Set-Cookie: DMZSID=none; HttpOnly; path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT可能会更容易,但是我更喜欢这样做。