将 cookie 复制到 Apache HTTPD 中的请求标头

将 cookie 复制到 Apache HTTPD 中的请求标头

我正在尝试为通过 Apache HTTPD 的所有请求设置请求标头。该值需要从附加到请求的 cookie 中获取。从 Apache 文档来看,它看起来像mod_headers可能会有用。

根据该页面上的示例,我将其放在一起:

RequestHeader set MyHeaderName "expr=%{req:access_token}"

其中“access_token”是 cookie 值的名称。这设置了标头,但值是空的,所以我认为我的表达方式不正确。

是否有一个表达式可以用来获取 cookie 值?

答案1

我认为它expr=%{req:access_token}不会为你提供 cookie 值,而只会提供与你的 cookie 同名的标头。你可能应该尝试从中找出一些东西,expr=%{HTTP_COOKIE}并使用正则表达式提取特定的 cookie 值。也许这可行(但我不确定正则表达式反向引用是否可以用作标头值):

RequestHeader set MyHeaderName $2 "expr=%{HTTP_COOKIE} =~ /(^|;\ *)access_token=([^;\ ]+)/

或者这样(首先设置标题,然后编辑它):

RequestHeader set MyHeaderName "%{HTTP_COOKIE}" "expr=%{HTTP_COOKIE} =~ /(^|;\ *)access_token=([^;\ ]+)/
RequestHeader edit MyHeaderName "(^|;\ *)access_token=([^;\ ]+)" "$2"

如果这不起作用,你可能需要添加mod_env要做到这一点,也许是这样的:

SetEnvIf Cookie "(^|;\ *)access_token=([^;\ ]+)" MyCookieValue=$2
RequestHeader set MyHeaderName "%{MyCookieValue}e"

另请参阅SO上的类似问题:https://stackoverflow.com/questions/22645118/using-mod-header-to-change-cookie-domains

相关内容