You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Apache环境变量值写入响应头?正确配置方法咨询

正确配置Apache响应头携带环境变量的方法

嘿,这个问题我碰到过不少次!你得到(null)是因为两个关键点没做对:一是变量引用的语法不对,二是Header指令的执行时机太早,那时候REQUEST_STATUS还没被赋值呢。

先给你直接上正确的配置,解决REQUEST_STATUS的问题:

Header always set MyHeader "%{REQUEST_STATUS}s"

给你拆解一下为什么这样写:

  • always关键字:默认的Header set是在请求处理的早期(onsuccess阶段)执行的,这时候响应状态码还没生成,自然拿不到值。加上always后,这个指令会在响应准备发送的阶段执行,这时候REQUEST_STATUS已经有正确的状态码了。
  • %{REQUEST_STATUS}s语法:这里的s表示你引用的是Apache的内部响应状态变量。如果是要引用系统环境变量(比如你自己通过SetEnv设置的变量),就得换成e后缀,举个例子:
    # 先设置一个自定义环境变量
    SetEnv APP_VERSION "1.2.3"
    # 把它放到响应头里
    Header always set App-Version "%{APP_VERSION}e"
    

另外再提个小细节:如果你用的是Apache 2.4+,always和默认的onsuccess是两个不同的响应阶段,onsuccess只在2xx状态码的成功响应里生效,而always会覆盖所有情况,包括404、500这类错误响应,根据你的需求选就行。

内容的提问来源于stack exchange,提问作者odavid

火山引擎 最新活动