Не приведет ли неверная конфигурация в файлах cookie и / или пост-полях к этой 500 внутренней ошибке сервера при использовании wp_remote_post для публикации данных в Wordpress? - PullRequest
0 голосов
/ 28 марта 2019

Я подключаюсь к серверу, который не имеет опубликованного API и успешно смог использовать функции curl PHP для получения токена и входа в систему, но когда я пытаюсь использовать встроенные функции Wordpress для достижения того же самого, Я не успешно и получаю 500 Внутренняя ошибка сервера с удаленного хоста.Я считаю, что мне может потребоваться правильно настроить файлы cookie и / или параметры данных.

Я могу получить токен с удаленного хоста с помощью wp_remote_get.Я попытался изменить Content-Type на text, json и другие распространенные альтернативы, хотя «application / x-www-form-urlencoded» работал нормально при использовании curl.Я попытался отправить токен в заголовке, а также в полях сообщения.

// I am trying to get this to work:

$token = get_transient('access_token');
if (!$token)
    return;

$args = array(
    'method'      => 'POST',
    'timeout'     => 45,
    'redirection' => 5,
    'httpversion' => '1.0',
    'blocking'    => true,
    'compress'    => true,
    'headers'     => array(
        'Authority' => 'remote.site.com',
        'Content-Type' => 'application/x-www-form-urlencoded',
        'Referer' => 'remote.site.com/login',
        'Cache-Control' => 'max-age=0',
        'Upgrade-Insecure-Requests' => 1,
        'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
        'Accept-Encoding' => 'gzip, deflate, br',
        'Accept-Language' => 'zh-CN,zh;q=0.9,en;q=0.8,ms;q=0.7,zh-TW;q=0.6,fr;q=0.5',
        'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'
    ),
    'cookies'     => array(),
    'body'        => array(
        '__RequestVerificationToken' => $token,
        'UserName' => USERNAME,
        'Password' => PASSWORD,
        'RememberMe' => true
    )
);

$response = wp_remote_post( 'remote.site.com', $args);

// и не проблема, делая это таким образом ...

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'remote.site.com/login');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "__RequestVerificationToken=$token&UserName=JohnDoe&Password=password&RememberMe=true");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');

$headers = array();
$headers[] = 'Authority: remote.site.com';
$headers[] = 'Cache-Control: max-age=0';
$headers[] = 'Origin: https://remote.site.com';
$headers[] = 'Upgrade-Insecure-Requests: 1';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36';
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
$headers[] = 'Referer: https://remote.site.com/login';
$headers[] = 'Accept-Encoding: gzip, deflate, br';
$headers[] = 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,ms;q=0.7,zh-TW;q=0.6,fr;q=0.5';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookiefile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($ch, CURLOPT_HEADER, 1);

При использовании функций curl, Я получаю 302 ответа на запрос входа в систему, и последующие запросы выполняются, тогда как с помощью wp_remote_post я получаю ответ со страницей входа в систему и ответ 500 внутренней ошибки сервера.

1 Ответ

0 голосов
/ 28 марта 2019
add code inside the wp-config file 

define ('COOKIE_DOMAIN', $ _SERVER ['HTTP_HOST']);

define( 'ADMIN_COOKIE_PATH', '/' );  

define ('COOKIEPATH', '/');

define ('SITECOOKIEPATH', '/');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...