调用WordPress REST API获取用户列表时遭遇401未授权错误
调用WordPress REST API获取用户列表时遭遇401未授权错误
我尝试调用https://www.website.com/wp-json/wp/v2/users?context=edit接口获取用户列表,收到以下错误:
Error making API request: 401 Client Error: Unauthorized for url: https://www.website.com/wp-json/wp/v2/users?context=edit
已完成的排查动作:
- 确认凭据输入正确,使用的是管理员权限账号
- 已创建5个不同的应用密码尝试认证
- 已替换
.htaccess文件为以下内容:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
- 已停用WordFence及所有插件
- 另有4个技术配置完全一致的站点可正常认证,仅该站点异常
进一步排查建议
- 验证HTTP_AUTHORIZATION头是否被服务器拦截:部分主机商会禁用或修改该请求头,可在主题
functions.php中添加代码验证:
add_action('init', function() { $auth_header = $_SERVER['HTTP_AUTHORIZATION'] ?? 'Not present'; error_log('HTTP_AUTHORIZATION: ' . $auth_header); });
调用API后查看服务器错误日志,确认头信息是否正常传递。若未获取到,联系主机商开启该头的支持。
- 检查应用密码的使用格式:确保请求时采用
Basic [base64编码的"用户名:应用密码"]格式,用curl测试示例:
curl -u "管理员用户名:你的应用密码" https://www.website.com/wp-json/wp/v2/users?context=edit
也可手动编码后在请求头携带:
Authorization: Basic YWRtaW51c2VyOmFwcC1wYXNzd29yZA==
排查SSL重定向导致的头丢失:若站点启用了HTTPS,确认服务器是否在HTTP转HTTPS的重定向过程中丢弃了认证头,可直接发起HTTPS请求避免重定向环节。
开启WordPress调试日志:在
wp-config.php中添加以下代码,调用API后查看wp-content/debug.log获取更详细的错误信息:
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true);
检查用户账号状态:确认该管理员账号未被锁定,若启用了两步验证,需确保应用密码是在两步验证开启后创建的;同时检查是否有自定义权限规则覆盖了默认管理员权限。
对比正常站点的服务器配置:重点对比php.ini中的
allow_url_fopen、mod_rewrite启用状态,以及php_auth相关配置是否被禁用。
内容的提问来源于stack exchange,提问作者Kasper Toft Braun
相关产品推荐
相关产品推荐

