通过邮递员传递借来的随机数失败

时间:2019-09-18 作者:Sean D

我正在尝试从浏览器会话中借用nonce,以便在其他地方使用它,即在我的npm开发环境中。

我将一个nonce传递到打开的Chrome浏览器会话中,将其放在Postman中“X-WP-nonce”的get请求头中,然后返回“Cookie nonce无效”:

Postman Nonce Failure

我还尝试在不包围“”的情况下输入nonce值

有人知道此请求失败的原因吗?

已添加

我认为这不重要,但以防万一,这是/auth 路由处理程序:

  public function authCallback(\\WP_REST_Request $request) : void {
    $this->isAdminOrRejectionResponse();

    wp_send_json([
      \'success\' => "You have access to wp_get_current_user()"
    ]);
  }

  protected function isAdminOrRejectionResponse() {
    if (current_user_can(\'administrator\') === false) {
      wp_send_json([\'error\' => \'You do not have Administrator credentials.\']);
    }
  }

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

对于远程应用程序(cURL、Postman等),或不使用浏览器时,应使用authentication plugin 喜欢Application Passwords 而不是发送cookies。

但是如果你想发送cookie,那么复制并发送WordPress登录的cookiewordpress_logged_in_<hash>. 卷曲中的示例:

curl -H "X-WP-Nonce: <nonce>" -X POST https://example.com/wp-json/wp/v2/posts -d "Data here" -b wordpress_logged_in_<hash>=<cookie value>

请注意,WordPress将用户的登录数据(用户名和哈希数据)保存在名为wordpress_logged_in_<hash> (但您可以使用LOGGED_IN_COOKIE 常量)。

此外,在上面的(cURL)示例中,我使用了X-WP-Nonce 标头以立即发送cookie。

UPDATE: 添加了在Chrome中查找和复制cookie的屏幕截图:

enter image description here

相关推荐

REST API和按元值过滤

我有一个posttype“timeslip”,我使用以下API端点调用它:/wp-json/wp/v2/timeslip?meta_key=user_id&meta_value=1 我已将自定义字段user\\u id公开给API元,并可以在响应中看到它。add_filter(\'rest_timeslip_query\', array($this, \'timeslip_meta_request_params\')); public function registe