我试图在所有通过Apache HTTPD的请求上设置一个请求头。 该值需要从附加到请求的cookie中获取。 从Apache文档,它看起来像mod_headers可能工作。
从这个页面上的例子,我把它放在一起:
RequestHeader set MyHeaderName "expr=%{req:access_token}"
其中“access_token”是cookie值的名称。 这确定了标题,但价值是通过空,所以我不认为我有这个expression的权利。
有没有一个expression式可以用来获取cookie值?
我认为expr=%{req:access_token}不会让你的cookie值,但只有一个标题与您的cookie相同的名称。 您可能应该尝试从expr=%{HTTP_COOKIE}找出一些东西,并使用正则expression式提取具体的cookie值。 也许这可以工作(但我不确定正则expression式引用可以用作标题值):
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