【问题标题】:Apache config read header valueApache config 读取标头值
【发布时间】:2013-11-15 09:16:18
【问题描述】:

有没有办法在 Apache 配置中读取请求标头的值?我想避免进入 .htaccess 文件,如果我可以避免使用 SetEnvIf,那就更好了。 我正在尝试在这里实施建议:https://stackoverflow.com/a/1850482/138228

除了使用正则表达式之外,我真的找不到关于这个主题的太多信息。我正在寻找的是类似的东西:

标头集 NAME = %{value_of_different_header}%

【问题讨论】:

    标签: apache header


    【解决方案1】:

    阅读来自https://serverfault.com/questions/136428/header-set-access-control-allow-origin-not-working-with-mod-rewrite-mod-jk的答案

    看来解决办法是:

    SetEnvIf Origin "http(s)?://(domaine1\.com|domain2\.com)$" AccessControlAllowOrigin=$0
    Header always set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    

    但这与 .htaccess 无关,您可以将这些行放在常规的 apache 配置文件(虚拟主机?)中,而无需使用 bad .htaccess 动态配置文件。

    Header指令的值部分是:

    值可以是字符串、包含格式说明符的字符串或两者的组合

    但唯一可用的格式说明符是%%(用于%)、%t 用于时间戳、%D(同上)、%{foo}e%{foo}s 用于环境变量。

    SetenvIf 是一个很好的 apache 读取请求头的工具,这里读取 Origin 头。然后,使用环境变量是在 Apache 中编写复杂事物的经典方式(我的意思是存储某种变量的方式)。

    所以我不知道你为什么想要另一个解决方案。

    【讨论】:

      【解决方案2】:

      如果没有 SetEnvIf,我找不到这样做的方法,但除了可以使用以下方法仅复制不同的标头之外,我将其作为 ReverseProxy 的一部分(因此使用 RequestHeader 而不是 Header)但是两个似乎可以互换

      ###This reads the value of OldHeader into TempValue
      SetEnvIf OldHeader ".+" TempValue=$0
      
      ###This will overwrite the value of "NewHeader" if it was already set
      RequestHeader set NewHeader %{TempValue}e env=TempValue
      
      ###Optionally remove the original
      RequestHeader unset OldHeader 
      

      【讨论】:

        猜你喜欢
        • 2021-04-25
        • 1970-01-01
        • 2014-07-27
        • 2016-05-08
        • 2019-06-12
        • 1970-01-01
        • 2016-12-28
        • 2020-09-14
        • 1970-01-01
        相关资源
        最近更新 更多