Apache requestheaders env variable and also early



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

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

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

但是我需要一种方法来尽早设置请求标头以及 env= 值,这可能吗?

这是我所拥有的:

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"

但这行不通。

我在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"

相关内容