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

WP Rest API无法捕获Authorization请求头问题求助

排查Android App无法捕获WordPress JWT Authorization请求头的问题

我来帮你梳理下这个问题的排查方向,结合你用JWT Auth插件的场景,一步步来:

1. 先确认Android端请求是否真的发送了Authorization头

有时候我们以为代码里加了头,但实际可能没生效,先从客户端排查:

  • 用Android Studio自带的Network Inspector查看请求详情,确认Authorization: Bearer <你的token>这个头是否存在,注意Bearer后面必须有空格,格式不能错
  • 或者用Charles/Fiddler抓包,直接看原始请求的头信息,确保客户端确实把这个头发送出去了

2. 检查WordPress的.htaccess配置是否正确

JWT Auth插件要求的核心配置必须正确放置,你提到只保留了插件要求的配置,再确认下是不是这几行,且放在RewriteEngine On之后、其他Rewrite规则之前:

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

另外要确保你的Apache服务器开启了mod_rewrite模块,有些虚拟主机默认是关闭的,需要联系主机商开启。

3. 强化CORS配置,处理OPTIONS预检请求

虽然你开启了JWT_AUTH_CORS_ENABLE,但有时候预检请求(OPTIONS)的响应可能没包含Authorization头的允许规则,导致客户端被拦截。可以在wp-config.php里手动添加更明确的CORS处理:

add_action('init', function() {
    // 生产环境请替换成你的Android App对应的请求来源,不要用*
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
    header("Access-Control-Allow-Headers: Authorization, Content-Type");
    
    // 直接响应OPTIONS请求,避免后续处理
    if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
        status_header(200);
        exit();
    }
});

4. 排除插件冲突和版本问题

  • 暂时禁用WordPress里的其他插件,尤其是安全类、缓存类插件,有些插件会过滤或移除Authorization头
  • 确认JWT Auth插件、WordPress、WooCommerce都是最新兼容版本,旧版本可能存在头传递的bug

5. 服务器环境的额外检查

如果你的服务器是Nginx(而非Apache),需要在Nginx配置里添加传递Authorization头的规则:

location / {
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 替换成你的PHP-FPM路径
    fastcgi_param HTTP_AUTHORIZATION $http_authorization;
    # 其他fastcgi配置...
}

另外可以写个简单的测试脚本,放在WordPress根目录,验证服务器是否能接收到Authorization头:

<?php
// test-auth-header.php
var_dump($_SERVER['HTTP_AUTHORIZATION']);
?>

用Postman调用这个脚本,带上Authorization头,看是否能输出对应的内容,这样可以排除服务器端的接收问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:18:13