配置Basic-Auth后访问WP REST API仍报401错误,求助排查
WP REST API 401认证错误排查方案
问题背景
我有一个WordPress站点https://example.com,需要使用WP REST API,但遇到了认证失败的问题:
- 已安装Basic-Auth插件
- 当前
.htaccess配置如下:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] </IfModule> # END WordPress
- 测试了HTTP和HTTPS协议,仍返回401错误:
{ "code": "rest_cannot_access", "message": "Only authenticated users can access the REST API.", "data": { "status": 401 } }
- 请求截图:

排查与解决方法
我之前也踩过Basic Auth搭配WP REST API的坑,给你几个实用的排查方向:
1. 先确认插件是否真的启用了
别笑,有时候安装完插件就忘了点「启用」!去WordPress后台的「插件」页面,找到Basic-Auth插件,确保它是激活状态。
2. 调整.htaccess里Authorization规则的位置
你的.htaccess虽然加了Authorization头的处理规则,但位置不对——WordPress的Rewrite规则是按顺序执行的,你把Authorization的规则放到了转发到index.php的规则之后,这时候请求已经被转走了,头信息根本没被处理。
调整后的正确.htaccess应该是这样:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # 先处理Authorization头,再做其他转发 RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
保存后记得刷新站点缓存,再测试API请求。
3. 强制服务器传递Authorization头
很多共享主机会默认屏蔽HTTP_AUTHORIZATION头,这时候可以在wp-config.php文件末尾加一段代码来强制启用:
define('FORCE_SSL_ADMIN', true); // 修复Authorization头传递问题 if ( !isset($_SERVER['HTTP_AUTHORIZATION']) && isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION']) ) { $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; }
保存后重新测试。
4. 检查用户权限
确保你用来认证的WordPress用户有足够的API访问权限——比如至少是「编辑」角色,订阅者角色默认是没有权限访问REST API的。去后台「用户」页面看看这个用户的角色。
5. 验证请求的认证方式是否正确
确认你发送请求时,确实正确添加了Basic Auth信息:
- 要么在请求头里加
Authorization: Basic [base64编码的用户名:密码](注意base64编码要正确,比如admin:123456编码后是YWRtaW46MTIzNDU2) - 要么用curl命令测试:
curl -u 你的用户名:你的密码 https://example.com/wp-json/wp/v2/posts
如果以上方法都没用,建议暂时禁用其他插件(尤其是安全类插件,它们可能会拦截API请求),或者切换到默认主题试试,排查是否有冲突。
内容的提问来源于stack exchange,提问作者cmii
相关产品推荐
相关产品推荐

