WooCommerce Blocks结账报错:woocommerce_rest_missing_nonce与500内部错误
WooCommerce Blocks(Store API)结账时的Nonce缺失及500错误问题
背景
开发一款集成WordPress核心与WooCommerce的自定义插件,仅用于扩展商品计算及购物车功能,不替换WooCommerce标准结账流程,结账页面采用WooCommerce Blocks(Store API)。
错误详情
使用Store API结账下单时出现异常,浏览器控制台及网络标签显示两种错误:
- 401权限错误:
{ "code": "woocommerce_rest_missing_nonce", "message": "缺少nonce请求头,该端点需要有效的nonce。", "data": { "status": 401 } }
- 偶尔触发500内部服务器错误:
{ "code": "internal_server_error", "message": "<p>该网站发生严重错误。</p><p><a href=\"https://wordpress.org/documentation/article/faq-troubleshooting/\">了解更多WordPress故障排除信息。</a></p>", "data": { "status": 500 }, "additional_errors": [] }
错误触发端点:/wp-json/wc/store/v1/checkout
已确认的环境与配置
- WooCommerce版本:已更新至最新
- WordPress版本:已更新至最新
- 结账页面:使用WooCommerce Blocks(非经典短代码)
- 页面源码中仅存在WordPress核心API的nonce变量:
var wpApiSettings = { "root": "https:\/\/mydomain.com\/wp-json\/", "nonce": "xxxxxxxxxx", "versionString": "wp\/v2\/" };
页面源码中未找到wc_store_api_nonce变量
已尝试的排查操作
- 清除所有缓存
- 确认无自定义JS干扰结账流程
- 启用WP_DEBUG并检查debug.log,未发现相关错误
已知认知
- WooCommerce Blocks(Store API)要求请求携带
X-WC-Store-API-Nonce请求头 - 该nonce应通过
wc_store_api_nonce变量输出在页面源码中 - 当前错误是由于WooCommerce未输出该nonce,导致Store API请求验证失败,进而出现401或500错误
内容的提问来源于stack exchange,提问作者Dragos Petrescu
相关产品推荐
相关产品推荐

