Apache 2.4中<If>指令自动添加Vary头部,如何禁用该行为?
Apache 2.4禁用指令自动添加Vary响应头的简便方案
你在Apache 2.4中使用<If>指令基于自定义请求头X-Some-Header-here做配置时,Apache会自动将该请求头加入Vary响应头。如果不想保留这个自动添加的条目,除了手动改写响应头,还有两种更简便的实现方式:
方法一:使用VaryNoAdd指令(Apache 2.4.10及以上版本)
Apache 2.4.10及后续版本提供了VaryNoAdd指令,专门用于禁止自动添加条件判断相关的Vary条目。只需将该指令添加到你的<If>块内部即可:
<If "%{HTTP:X-Some-Header-here} == 'yes'"> VaryNoAdd // 此处放置你的配置逻辑 </If>
这条指令会让Apache跳过当前上下文内,因条件判断产生的Vary自动添加操作,不会影响其他正常的Vary字段设置。
方法二:通过环境变量中转判断(兼容全2.4版本)
如果你的Apache版本低于2.4.10,可以先用SetEnvIf将请求头的匹配结果存入环境变量,再基于环境变量做<If>判断。这种方式下Apache不会自动将原请求头关联到Vary字段:
# 将请求头匹配结果存入环境变量 SetEnvIf X-Some-Header-here "yes" HEADER_IS_YES <If "%{ENV:HEADER_IS_YES} == '1'"> // 此处放置你的配置逻辑 </If>
因为判断依据变为环境变量,Apache不会把原请求头添加到Vary响应头中,直接避开了自动添加的问题。
内容的提问来源于stack exchange,提问作者Schubi Duah
相关产品推荐
相关产品推荐

