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

WordPress:使用JWT Auth插件无法访问REST API /posts端点

问题原因及解决方案

核心原因

  1. 身份验证未关联REST API权限校验:你获取的JWT Token本身有效,但JWT Auth插件未正确将Token对应的用户身份传递给WP REST API的权限校验逻辑。WP REST API的文章编辑/更新操作要求请求来自已授权用户,若插件配置不到位,REST API无法识别Authorization: Bearer头里的Token,会将请求判定为未登录用户发起,因此返回rest_cannot_edit错误。
  2. 核心REST API的默认权限限制:禁用插件后仍报错,是因为WP核心REST API本身就要求编辑/更新类的POST请求必须来自已授权用户。此时没有JWT插件提供身份验证机制,前端请求又无法通过常规Cookie完成身份校验(尤其是跨域场景下),所以同样返回401未授权。

解决步骤

1. 补全JWT Auth插件配置

在wp-config.php文件中添加以下必要配置:

// 生成一个随机密钥(可通过在线随机字符串工具生成)
define('JWT_AUTH_SECRET_KEY', 'your-random-secret-key');
// 启用CORS支持,解决跨域请求的头信息问题
define('JWT_AUTH_CORS_ENABLE', true);

2. 配置服务器支持HTTP_AUTHORIZATION头

多数服务器默认会丢弃Authorization请求头,需手动配置开启:

  • Apache服务器:在网站根目录的.htaccess文件中添加规则:
    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
    
  • Nginx服务器:在站点配置的location ~ \.php$块中添加:
    fastcgi_param HTTP_AUTHORIZATION $http_authorization;
    

3. 验证请求与用户权限

  • 确认Token对应的admin用户拥有edit_posts权限(管理员默认具备),同时目标文章(ID=1)确实存在,且该用户有权限编辑它(如为文章作者或管理员身份)。
  • 若要创建新文章,请将请求地址改为/wp-json/wp/v2/posts(POST请求对应创建操作);/wp-json/wp/v2/posts/1的POST请求是更新已有文章,需确保文章ID正确。

4. 检查请求头格式

确保Authorization头格式完全正确:Bearer 后必须带空格,且Token完整无截断。你的代码中'Bearer '+token的写法是正确的,可在浏览器控制台打印请求头确认最终格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:11:54