Я делаю запрос на другой сайт WordPress в нашей сети, как показано ниже.

    //Send the request to update the submission post
    $response = wp_remote_request( $this->urls->assign_url, array(
            'headers'     => array(
                'Content-Type' => 'application/json; charset=utf-8',
                'Authentication' => 'Basic '.base64_encode('somename:somepassword')
            ),
            'body'        => json_encode($array),
            'method'      => 'POST',
            'data_format' => 'body'
        )
    );
  • Я делаю этот запрос через ajax.
  • Функция обратного вызова вызывается и отправляет данные.
  • Я также вошел в удаленный сайт.
  • Я использую одноразовый номер, и пользователь, авторизованный в заголовках, является действительным пользователем.

Все, что я продолжаю получать, это:

body: "{"code":"rest_not_logged_in","message":"You are not currently logged in.","data":{"status":401}}"

Я только начал получать это, так как я обновил удаленную версию wordpress. До этого работал нормально.

Есть предположения.

0
Alex Knopp 25 Мар 2020 в 15:07
Вы используете аутентификацию по умолчанию или подключаемый модуль? Я не вижу одноразового номера в вашем запросе, но может быть недоразумением.
 – 
Chris
25 Мар 2020 в 15:12
Nonce передается в js функции обратного вызова и проверяется перед этим http-запросом. Я не использую плагин, это просто авторизация пользователя по умолчанию. Пользователь является простым администратором на удаленном сайте.
 – 
Alex Knopp
25 Мар 2020 в 15:15

1 ответ

Я считаю, что для аутентификации так, как вы хотите, вам нужно использовать плагин - встроенный метод аутентификации не идеален для внешних запросов, поскольку он основан на файлах cookie.

https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/#authentication-plugins

0
Chris 25 Мар 2020 в 20:28