WooCommerce API返回HTML而非JSON问题求助
以下是针对该问题的排查和解决步骤:
确认API端点正确性
先检查请求URL是否为WooCommerce REST API的标准商品端点,正确格式应为https://客户域名/wp-json/wc/v3/products(v3为当前主流版本,可根据WooCommerce版本调整为v2)。直接在浏览器访问该端点,若返回HTML,大概率是客户站点的REST API未正常启用,或固定链接设置有误。让客户进入WordPress后台「设置→固定链接」,切换为「文章名称」等非「朴素」模式——朴素模式下REST API常无法正常工作。验证API密钥权限与正确性
检查你使用的Consumer Key和Consumer Secret是否与客户站点生成的一致,且密钥需具备「读取」权限(获取商品仅需该权限)。可以用Postman测试:在请求头添加Authorization: Basic [base64编码的consumer_key:consumer_secret],若仍返回HTML,说明密钥验证失败,需重新确认密钥配置。排查安全插件/防火墙拦截
多数WordPress安全插件(如Wordfence、iThemes Security)或服务器防火墙(如Cloudflare)会拦截外部REST API请求。建议客户暂时禁用安全插件后再测试,若恢复正常,需在插件中添加API端点或你的请求IP至白名单;若使用Cloudflare,检查WAF规则是否阻止了API请求。确认WooCommerce REST API状态
让客户进入WooCommerce后台「设置→高级→REST API」,确认API处于启用状态,且WooCommerce版本支持你使用的API版本(如v3需要WooCommerce 3.0及以上)。检查请求头设置
确保你的GET请求头包含Accept: application/json,部分WordPress站点若未接收到该头,会默认返回HTML格式的错误页面(如404页面)。
内容的提问来源于stack exchange,提问作者Luca Barnabo

