Apache requestheaders env变量,也很早

时间:2018-08-29 10:14:10

标签: apache environment-variables request-headers

我正在使用一个系统,该系统需要从我们公司正在开发的应用程序发送所有URL的Bearer令牌密钥(JWT),当需要下载附件时,单击其触发的链接,就会出现问题移动设备上的浏览器。

如您所知,这将不允许设置标头,因此正在研究一种解决方案,以在标头为空时添加标头。

现在,我可以从查询字符串中填充env变量。

但是我需要一种方法来尽早设置env =值的requestheader,这可能吗?

这就是我所拥有的:

RewriteCond %{QUERY_STRING} (?:^|&)token=([^&]+)
RewriteRule (.*) - [E=JW_TOKEN:%1]
RequestHeader setIfEmpty Authorization "Bearer %{JW_TOKEN}e" "env=JW_TOKEN"

我需要做的是这样的:

RewriteCond %{QUERY_STRING} (?:^|&)token=([^&]+)
RewriteRule (.*) - [E=JW_TOKEN:%1]
RequestHeader setIfEmpty Authorization "Bearer %{JW_TOKEN}e" "env=JW_TOKEN early"

但这不起作用。

1 个答案:

答案 0 :(得分:0)

我对HSTS有类似的问题。有条件地设置标题的最优雅方法是(如此处所述:https://stackoverflow.com/a/24145033/3433306):

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS

但这不能与early标志一起使用。但是,如果未按要求设置环境变量,我们可以尽早设置标头,然后再将其删除。

Header set   Strict-Transport-Security "max-age=31536000" early
Header unset Strict-Transport-Security env=!HTTPS

在您的情况下,这将产生以下内容(未经测试):

RewriteCond %{QUERY_STRING} (?:^|&)token=([^&]+)
RewriteRule (.*) - [E=JW_TOKEN:%1]
RequestHeader setIfEmpty Authorization "Bearer %{JW_TOKEN}e" "early"
RequestHeader unset      Authorization "env=!JW_TOKEN"