我正在尝试编写WordPress插件,并且正在使用Flywheel进行本地开发。该软件基本上为自己创建了一个虚拟机,并为PHP和MySQL预配置了必要的设置。然后,它在该VM中启动两个docker容器。一个用于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()));
}
无论我使用哪个端点。我还尝试通过POST到我们面向公众的网站来验证该问题,该网站可以正常运行。但是随后发布到一个完全不相关的内部应用程序会返回相同的错误。
这使我相信Docker容器/ VM未配置有配置主机的适当内部DNS。
我能够使exec进入VM的外壳以及docker容器本身。
我是否能够以具有正确名称服务器的方式在VM Shell中运行Docker容器?它和VM菜单中的网络设置一样简单吗?我不确定要在何处或做什么使我的XHR能够识别这些内部端点!