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

使用WordPress REST API v2创建用户遇401错误,求Nonce获取方法

嘿,我来帮你搞定这个WordPress REST API的问题!你碰到的rest_cannot_create_user错误确实是因为请求没带有效的Nonce验证头——WordPress用这个来防止CSRF攻击,下面我一步步教你怎么获取和使用它:

1. 先搞懂WordPress REST API的Nonce规则

WordPress REST API只认**wp_rest这个action对应的Nonce**,所以咱们得专门获取这个特定的Nonce值,别用错了其他场景的Nonce。

2. 获取Nonce的三种实用方法

方法一:在主题/插件里通过PHP生成(适合自己开发的场景)

如果你是在自己的WordPress主题或插件里发请求,可以用PHP直接生成Nonce,再传给前端JS:

  • 先在主题的functions.php或者插件文件里加这段代码:
function my_load_custom_scripts() {
    // 加载自定义JS文件
    wp_enqueue_script( 'my-rest-script', get_template_directory_uri() . '/js/rest-request.js', array('jquery'), '1.0', true );
    // 把Nonce和API根地址传给JS全局变量
    wp_localize_script( 'my-rest-script', 'wpRestConfig', array(
        'apiRoot' => esc_url_raw( rest_url() ),
        'nonce' => wp_create_nonce( 'wp_rest' )
    ) );
}
add_action( 'wp_enqueue_scripts', 'my_load_custom_scripts' );
  • 之后在你的前端JS里,就能直接用wpRestConfig.nonce拿到Nonce值了。

方法二:通过已登录用户的API端点获取

如果你已经用管理员账号登录了WordPress,可以直接请求/wp-json/wp/v2/users/me这个端点,响应头里的X-WP-Nonce字段就是你要的Nonce:

  • 用curl命令的话可以这么写(记得替换成你的站点地址):
curl -X GET https://你的站点域名/wp-json/wp/v2/users/me -c cookies.txt

查看返回的响应头,找到X-WP-Nonce就行。

方法三:从WordPress后台直接拿(最快捷的测试方法)

登录WordPress后台后,按F12打开浏览器开发者工具,切换到「控制台」标签,输入下面的代码回车:

wpApiSettings.nonce

控制台会直接输出wp_rest对应的Nonce值——因为后台页面已经自动加载了这个全局变量。

3. 在请求里带上Nonce

拿到Nonce后,一定要在请求头里加上X-WP-Nonce字段,值就是刚才获取到的Nonce。举两个常用的例子:

用JS的fetch发起请求:

fetch(wpRestConfig.apiRoot + 'wp/v2/users', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-WP-Nonce': wpRestConfig.nonce // 这里替换成你的Nonce值
    },
    body: JSON.stringify({
        username: 'new_test_user',
        email: 'test@example.com',
        password: 'YourSecurePass123!'
    })
})
.then(res => res.json())
.then(data => console.log('创建成功:', data))
.catch(err => console.error('出错了:', err));

用curl命令发起请求:

curl -X POST https://你的站点域名/wp-json/wp/v2/users \
-H "Content-Type: application/json" \
-H "X-WP-Nonce: 你拿到的Nonce值" \
-d '{"username": "new_test_user", "email": "test@example.com", "password": "YourSecurePass123!"}'
几个重要提醒
  • Nonce的有效期是24小时,过期后得重新获取。
  • 只有管理员权限的用户才能通过REST API创建新用户,确保你用的账号是管理员。
  • 如果是在公开前端页面用Nonce,要注意别泄露给未授权用户,避免安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:40:36