Я пытаюсь написать плагин для WordPress и разрабатываю с использованием Local by Flywheel.Это программное обеспечение в основном создает виртуальную машину для себя с необходимыми настройками, предварительно настроенными для PHP и MySQL.Затем он запускает два док-контейнера внутри этой виртуальной машины.Один для Nginx, а другой неясен.
Когда я открываю свой браузер, я могу развиваться на своем экземпляре WordPress.
Я пытаюсь создать плагин, который проходит черезOAuth поток.Чтобы сделать это, он должен уметь выполнять типичные шаги, которые требует OAuth, используя некоторые конечные точки.Когда я проверяю свои журналы PHP, я нахожу ошибку:
[08-May-2019 14:42:42 UTC] Response Code ""
[08-May-2019 14:42:42 UTC] Headers []
[08-May-2019 14:42:42 UTC] Body ""
[08-May-2019 14:42:42 UTC] Response successful: {"errors":{"http_request_failed":["A valid URL was not provided."]},"error_data":[]}
Для следующего кода:
function cm_sso_token_swap(WP_REST_Request $request)
{
$authCode = $request->get_param('code');
$tokenSwapResponse = wp_safe_remote_post(CM_SSO_TOKEN_ENDPOINT, array(
'timeout' => 15,
'headers' => array('content-type' => 'multipart/form-data'),
'body' => array(
'grant_type' => CM_SSO_GRANT_TYPE,
'code' => $authCode,
'redirect_uri' => $redirect_uri,
'client_id' => $client_id,
'client_secret' => $client_secret,
),
));
var_dump($tokenSwapResponse);
if (is_wp_error($tokenSwapResponse) || !strpos($tokenSwapResponse['body'], "SUCCESS") === 0) {
error_log($tokenSwapResponse->get_error_message());
error_log('Response Code ' . json_encode(wp_remote_retrieve_response_code($tokenSwapResponse)));
error_log('Headers ' . json_encode(wp_remote_retrieve_headers($tokenSwapResponse)));
error_log('Body ' . json_encode(wp_remote_retrieve_body($tokenSwapResponse)));
}
error_log('Response successful: ' . json_encode($tokenSwapResponse));
return new WP_REST_Response(json_encode($request->get_params()));
}
Независимо от того, какую конечную точку я использую.Я также проверил проблему, пытаясь отправить сообщение на наш общедоступный веб-сайт, который возвращается нормально.Но затем отправка сообщения в совершенно не связанное внутреннее приложение возвращает ту же ошибку.
Это заставляет меня поверить, что контейнер / виртуальная машина Docker не настроен с соответствующим внутренним DNS, с которым настроен мой хост-компьютер.
Я могу получить exec в оболочке виртуальной машины, а также в самих контейнерах докеров.
Смогу ли я запустить контейнеры Docker в оболочке VM таким образом, чтобы у них были правильные серверы имен?Это так же просто, как настройка сети в меню виртуальной машины?Я не уверен, где и что мне нужно сделать, чтобы мои XHR могли распознавать эти внутренние конечные точки!