我已经看到了一堆用于在htaccess中动态设置请求来源标头的示例,这些示例看起来都像这样:
SetEnvIf Origin "^http(s)?://(.+\.)?(example\.com|example\.org)$" REQUEST_ORIGIN=$0
Header always set Access-Control-Allow-Origin %{REQUEST_ORIGIN}e env=REQUEST_ORIGIN
但是,我似乎在任何地方都找不到第二行语法的解释。我还看过这里,发现了一个语法相似的示例,但又没有任何解释它的工作原理:
https://httpd.apache.org/docs/2.4/env.html
具体来说,我想了解%{REQUEST_ORIGIN}e
和env=REQUEST_ORIGIN
。
这些东西各自做什么?前者似乎正在对变量进行处理,但是括号语法如何工作以及为什么尾随e
会如此?
答案 0 :(得分:1)
只有设置了 REQUEST_ORIGIN 变量时,第二行才设置Access-Control-Allow-Origin。
关于%{REQUEST_ORIGIN}e
,它表明它需要从环境变量中获取值。
基本上,这两行共同检查有效/安全的来源,并在检查通过时将CORS标头设置为适当的值。
Header指令后可以跟一个附加参数,该参数可以是以下任意一个:
...
env = [!] varname
仅当环境变量varname存在时,才应用该指令。一种 ! varname前面的命令会逆转测试,因此该指令仅在未设置varname时适用。
关于e
语法:
%{VARNAME} e环境变量VARNAME的内容。
参考文献: