web-dev-qa-db-ja.com

借りたナンスをPostmanで渡すと失敗する

私はブラウザーセッションからナンスを借りてテストして、他の場所、つまりnpm開発環境でそれを使用できるようにしています。

私は開いているナンスを受け取ったChromeブラウザセッション、Postmanの "X-WP-Nonce"のgetリクエストヘッダーに入れて、 "Cookie nonce is invalid"を返しました:

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
Sean Dezoysa

リモートアプリ(cURL、Postmanなど)の場合、またはブラウザーを使用していない場合は、 認証プラグインApplication Passwords Cookieを送信する代わりに。

ただし、Cookieを送信する場合は、WordPress wordpress_logged_in_<hash>という名前のログインCookieをコピーして送信します。cURLの例:

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>という名前のCookieに保存します(ただし、 LOGGED_IN_COOKIE 絶え間ない)。

また、上記の(cURL)の例では、X-WP-Nonceヘッダーを使用してcookie nonceを送信しました。

UPDATE:ChromeのCookieのスクリーンショットを追加(検索およびコピー):

enter image description here

2
Sally CJ