【问题标题】:Apache requestheaders env variable and also earlyApache requestheaders 环境变量和早期
【发布时间】:2019-02-04 02:18:19
【问题描述】:

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

如您所知,这将不允许设置标头,因此正在研究添加标头的解决方案(如果标头为 emtpy)。

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

但是我需要一种方法来尽早设置 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"

但这不起作用。

【问题讨论】:

    标签: apache environment-variables request-headers


    【解决方案1】:

    我遇到了与 HSTS 类似的问题。有条件地设置标题的最优雅的方法是(如此处所述: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"
    

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2015-05-14
      • 1970-01-01
      • 2017-08-26
      相关资源
      最近更新 更多