You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP在IIS环境下Webhook请求头大小写不一致问题求助

解决IIS+PHP环境下Webhook请求头大小写异常问题

问题根源

IIS的HTTP.sys组件会自动规范化请求头格式,将每个连字符分隔的单词处理为首字母大写、其余小写的形式,导致你发送的X-ZEvent-Signature被转换为X-Zevent-Signature,进而在PHP中引发验证差异。

可行解决方案

  • 兼容大小写验证(推荐):在PHP中不严格匹配请求头的大小写,统一转换为相同格式后再校验。示例代码:

    $targetHeader = strtolower('X-ZEvent-Signature');
    $signature = null;
    // 遍历所有请求头,忽略大小写匹配
    foreach (getallheaders() as $headerName => $headerValue) {
        if (strtolower($headerName) === $targetHeader) {
            $signature = $headerValue;
            break;
        }
    }
    // 后续使用$signature进行签名验证逻辑
    
  • 禁用IIS请求头规范化:修改站点的web.config配置,关闭HTTP.sys的请求头自动规范化功能。注意此设置会影响整个站点,需测试兼容性:

    <configuration>
      <system.webServer>
        <serverRuntime requestHeaderValidationMode="Legacy" />
      </system.webServer>
    </configuration>
    
  • 统一发送端请求头格式:直接将发送的请求头改为X-Zevent-Signature,和IIS规范化后的格式保持一致,从源头避免差异。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:55:33