You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Basic Auth访问WordPress API时出现MISSING_AUTHORIZATION_HEADER错误

问题原因分析

出现MISSING_AUTHORIZATION_HEADER错误的核心原因是Apache服务器默认未将Authorization请求头传递给PHP,导致WordPress REST API无法获取到Basic Auth的认证信息。插件测试页通过Cookie能正常访问,是因为Cookie属于会话认证逻辑,和Basic Auth的头认证机制完全独立。

解决方法

以下是针对性的排查和修复步骤:

1. 修正.htaccess配置,强制传递Authorization头

替换当前WordPress默认的.htaccess内容为以下配置(注意将/testblog/替换为你的实际站点路径):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /testblog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /testblog/index.php [L]

# 传递Authorization头到PHP
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>

# 针对CGI/FastCGI环境的额外设置
<IfModule mod_setenvif.c>
SetEnvIfNoCase Authorization "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>

保存后重启Apache服务,再用Postman测试Basic Auth请求。

2. 检查并启用必要的Apache模块

确保mod_rewrite和mod_setenvif模块已启用:

  • 执行命令查看已启用模块:apache2ctl -M
  • 如果模块未列出,执行启用命令:
    a2enmod rewrite setenvif
    
  • 重启Apache:systemctl restart apache2(Debian/Ubuntu系统)或service httpd restart(CentOS/RHEL系统)

3. 调整PHP配置(针对FastCGI环境)

编辑php.ini文件,确保以下配置正确:

cgi.fix_pathinfo = 1

修改后重启Apache和PHP-FPM(如果使用PHP-FPM)。

4. 验证Postman请求的正确性

不要手动输入Authorization头,使用Postman自带的Basic Auth认证方式:

  • 在Postman的「Authorization」标签页,选择「Basic Auth」类型
  • 输入用户名testblog和密码testblog,Postman会自动生成正确的Authorization: Basic [编码后的字符串]头
  • 发送请求测试是否正常

5. 排查插件与服务器配置的冲突

  • 暂时禁用其他所有WordPress插件,仅保留「WordPress REST API Authentication」插件,测试请求是否正常
  • 进入插件设置页面,确认已启用「REST API Basic Authentication」选项(部分插件需要手动开启该模式)

内容的提问来源于stack exchange,提问作者Genaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:23:16