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

PHP警告:Undefined array key 'HTTP_X_WC_WEBHOOK_SIGNATURE'求助

解决WooCommerce Webhook请求头丢失引发的PHP警告

问题确认

你的判断是对的,GoDaddy主机确实存在拦截或移除自定义HTTP请求头的情况,尤其是X-WC-Webhook-Signature这类非标准请求头。测试站点正常触发Webhook,说明配置本身没问题,问题出在生产环境的主机限制。

可行解决方案

1. 修改.htaccess保留请求头

在WordPress根目录的.htaccess文件中添加以下规则,强制把原始请求头映射到PHP能读取的变量:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-WC-Webhook-Signature} ^(.*)$
RewriteRule .* - [E=HTTP_X_WC_WEBHOOK_SIGNATURE:%1]
</IfModule>

这段代码会将X-WC-Webhook-Signature头重新赋值给HTTP_X_WC_WEBHOOK_SIGNATURE,确保PHP的$_SERVER数组能获取到。

2. 调整插件代码的请求头读取逻辑

如果.htaccess修改无效,直接在插件代码中兼容多种读取方式,避免未定义索引警告:

// 替换原有的$_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE']读取逻辑
$signature = '';

// 尝试读取标准命名的头
if (isset($_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'])) {
    $signature = $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'];
}
// 尝试读取原始头名称
elseif (isset($_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'])) {
    $signature = $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'];
}
// 尝试通过getallheaders()函数获取
elseif (function_exists('getallheaders')) {
    $headers = getallheaders();
    if (isset($headers['X-WC-Webhook-Signature'])) {
        $signature = $headers['X-WC-Webhook-Signature'];
    }
}

// 处理签名缺失的情况
if (empty($signature)) {
    error_log('Webhook signature not found');
    wp_send_json_error('Invalid request', 403);
}

// 后续验证逻辑使用$signature变量

3. 联系GoDaddy支持解除拦截

直接提交工单给GoDaddy技术支持,明确询问是否启用了请求头过滤规则,要求将X-WC-Webhook-Signature头加入白名单。部分主机的ModSecurity等安全模块会拦截自定义头,需要人工调整。

4. 临时替代验证方案(不推荐长期使用)

如果以上方法都无法解决,可以临时改用URL参数验证:

  • 在WooCommerce的Webhook URL中添加自定义参数,比如https://your-site.com/webhook-endpoint?secret=your_unique_key
  • 在插件中验证该参数:
$valid_secret = 'your_unique_key';
$received_secret = isset($_GET['secret']) ? $_GET['secret'] : '';

if ($received_secret !== $valid_secret) {
    wp_send_json_error('Unauthorized', 403);
}

注意:这种方式安全性低于签名验证,仅作为临时应急方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:59