调用WooCommerce REST API获取用户信息返回403错误如何解决
报错常见诱因
- Web服务器未正确传递
Authorization请求头:Nginx、Apache默认配置下大概率会丢弃Basic Auth的身份校验头,导致WooCommerce无法识别API密钥身份 - API密钥绑定的WordPress账号权限不足:即使API密钥配置了读写权限,只要密钥绑定的WP账号没有
manage_woocommerce、list_users权限,就无法访问顾客类接口 - 站点插件拦截请求:安全类、用户权限管控类、REST API限制类插件会默认拦截高权限接口请求
- 密钥权限配置不符:后台实际配置的API密钥权限为只读,未正确开通读写权限
- 请求链路存在HTTP跳转:站点配置了HTTPS强制跳转,请求过程中从HTTPS跳转到HTTP时会丢失
Authorization头
对应解决方法
- 校验账号权限:先将API密钥绑定的WP账号临时设置为管理员权限测试接口,若可正常访问,后续给该账号单独分配
manage_woocommerce、list_users权限即可,无需长期保留管理员权限 - 配置服务器透传身份头:
- Nginx环境:在站点配置的location块中添加如下规则:
proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; - Apache环境:在站点根目录的
.htaccess文件中添加如下规则:SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
- Nginx环境:在站点配置的location块中添加如下规则:
- 排查插件冲突:临时禁用所有安全、权限管控类插件,测试接口是否可正常访问,确认是插件拦截后将WooCommerce REST API路径
/wp-json/wc/*加入插件白名单即可 - 重新生成API密钥:进入WooCommerce后台→设置→高级→REST API,删除原有密钥重新生成一对读写权限的密钥,替换原有密钥测试
- 校验请求链路:用curl加
-v参数发起测试请求,确认请求全程走HTTPS、无HTTP跳转,Authorization头正常携带
内容的提问来源于stack exchange,提问作者RawalD
相关产品推荐
相关产品推荐

