Apache requestheaders env 变量也很早

标签 apache environment-variables request-headers

我正在开发一个系统,需要为我们公司正在开发的应用程序中的所有 URL 发送不记名 token key (JWT),当存在需要下载的附件并单击它触发的链接时,就会出现问题移动设备上的浏览器。

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

现在我可以从查询字符串中获取填充的环境变量。

但是我需要一种方法来尽早设置 requestheader 和 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 也有类似的问题。有条件地设置 header 的最优雅的方法是(如下所述:https://stackoverflow.com/a/24145033/3433306):

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

但这不能与early标志结合使用。但是,如果环境变量未按要求设置,我们可以提前设置 header 并稍后将其删除。

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"

关于Apache requestheaders env 变量也很早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52074959/

相关文章:

php - Apache 403 上传文件时被禁止

javascript - .htaccess AddType 不起作用

perl - 如何清理编辑器等环境变量?

java - @Resource 不注入(inject)环境条目

php - 个性化网址

apache - 面向 SaaS 产品客户的自定义域功能

bash - 在容器中设置 ENV 变量不起作用,是否在容器运行时执行 "/usr/local/bin"下的每个变量?

html - 如果请求和响应的 uri 相同,为什么 Microsoft edge 在调用 POST/REDIRECT/GET 方法时发送空的 http-referer?

Javascript 不会设置在 XHR 响应中收到的 httpcookie

spring - 使用 Spring WebClient 重试时添加新 header