2

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

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

标头集 NAME = %{value_of_different_header}%

4

2 回答 2

2

阅读答案: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 配置文件(虚拟主机?)中,而无需使用的.htaccess 动态配置文件。

Header 指令的值部分是:

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

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

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

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

于 2013-11-05T13:07:31.090 回答
1

如果没有 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 
于 2018-02-26T14:45:33.063 回答