apache - Apache requestheaders 环境变量和早期
问题描述
我正在开发一个系统,该系统需要从我们公司正在开发的应用程序中为所有 URL 发送承载令牌密钥 (JWT),当需要下载附件时会出现问题,单击链接时会触发浏览器移动设备。
如您所知,这将不允许设置标头,因此如果标头是空的,我正在研究添加标头的解决方案。
现在我可以从查询字符串中获取 env 变量。
但是我需要一种方法来尽早设置 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 也有类似的问题。有条件地设置标头的最优雅的方法是(如此处所述: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"
推荐阅读
- html - CSS溢出-y:滚动滚动条位置不在正确的位置
- java - 嵌套异常是 org.hibernate.QueryParameterException:找不到命名参数 [限制]
- flutter - 如何删除通过推送底部导航堆叠的所有页面?
- javascript - 从 Reactjs 上未定义的 api 接收的 JSON 对象
- html - CSS 不加载新文件,只加载前一个文件
- python - 使用 Python 检查整数溢出不起作用
- html - Two column CSS flexbox not responding to 800px media query
- c++ - 如何让 Arduino 的串行监视器显示一个字符串值,但只有值在变化?
- amazon-web-services - Nginx 在配置文件中使用 AWS Auto Scaling Group 实例和 Nginx 开源
- mysql - SQL 查询:指示某行的值是否为 0