在httpd中设置env变量并在Response标头中访问它们

时间:2018-08-02 22:12:53

标签: mod-rewrite apache2 apache2.4 mod-headers

我有以下conf。我正在尝试使用在重写规则中提取的值设置cookie。但是cookie的值始终设置为null。正则表达式有问题还是我在这里尝试做错什么。我对Apache httpd完全陌生。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)uname=(.*)
RewriteRule ^/(.*)&uname=(.*)$ /$1 [env=GRAFANA_UNAME:%2,L,PT]

RewriteCond %{HTTP_COOKIE} uname=(.*)
RewriteRule ^(.*)$ "-" [env=GRAFANA_UNAME:%1,L,PT]

RequestHeader set X-WEBAUTH-USER %{GRAFANA_UNAME}e

RequestHeader unset Authorization

ProxyRequests Off
ProxyPass "/" http://localhost:3000/
ProxyPassReverse "/" http://localhost:3000/

Header always set Set-Cookie "uname=%{GRAFANA_UNAME}e;path=/;HttpOnly"

当我执行uname =%{GRAFANA_UNAME} e时,cookie值始终设置为null。如何在响应标头中获得uname的值。

1 个答案:

答案 0 :(得分:0)

您的规则暗示这些指令不在htaccess中,但我的假设是内部重定向仍然会在您的请求真正得到处理之前发生。

尝试访问REDIRECT_GRAFANA_UNAME。每次内部重定向发生时都会添加该前缀,以区分当前请求和先前请求的环境。