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

WordPress自定义REST API路由POST请求报403权限错误求助

WordPress自定义REST路由POST请求403错误解决办法
  • 检查权限回调配置
    注册自定义路由时,permission_callback参数默认是__return_false,会直接拒绝所有请求。你得改成符合需求的权限逻辑,比如允许登录用户访问:

    register_rest_route( 'your-namespace/v1', '/your-route', array(
        'methods' => 'POST',
        'callback' => 'your_callback_function',
        'permission_callback' => function() {
            // 允许所有登录用户
            return is_user_logged_in();
            // 测试阶段可以直接返回true(生产环境别这么搞)
            // return true;
        }
    ) );
    
  • 必须携带有效的REST nonce令牌
    WordPress REST API的POST请求要求带wp_rest nonce,否则直接返回403。前端要这么做:

    1. 先在页面里通过PHP输出nonce:
      wp_localize_script( 'your-script-handle', 'wpApiSettings', array(
          'root' => esc_url_raw( rest_url() ),
          'nonce' => wp_create_nonce( 'wp_rest' )
      ) );
      
    2. 然后在Ajax请求的headers里加上这个令牌:
      fetch( wpApiSettings.root + 'your-namespace/v1/your-route', {
          method: 'POST',
          headers: {
              'Content-Type': 'application/json',
              'X-WP-Nonce': wpApiSettings.nonce
          },
          body: JSON.stringify( { /* 你的请求数据 */ } )
      } );
      
  • 排查安全插件或XML-RPC限制
    像Wordfence这类安全插件可能会限制REST API的POST请求,或者你禁用了XML-RPC(部分场景会影响权限验证)。可以先临时禁用安全插件测试,或者在插件设置里放行你的自定义路由。

  • 确认路由支持POST方法
    注册路由时的methods参数要明确包含POST,比如写'methods' => 'POST',或者用WP_REST_Server::CREATABLE,别只设置成支持GET请求,不然POST会被直接拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:27:13