api - YII2 client->createRequest() 忽略验证

标签 api ssl yii2 client verification

我正在尝试从我的 Yii 应用程序调用外部 API

$client = new Client();
$response = $client->createRequest()
    ->setMethod('POST')
    ->setUrl('https//externalApi')
    ->setData(['name' => 'John Doe', 'email' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2a404542444e454f6a4f524b475a464f04494547" rel="noreferrer noopener nofollow">[email protected]</a>'])
    ->send();
if ($response->isOk) {
    var_dump($response);
}

但我得到:

HTTP Client Exception: fopen(): Peer certificate CN=`****' did not match expected CN=`****'

我认为这与 SSL 证书有关。 有没有办法忽略验证?

最佳答案

我找到了解决方案,您需要设置选项以禁用带有 ssl 前缀的 SSL 检查,因此请求如下:

$client = new Client();
$response = $client->createRequest()
    ->setMethod('POST')
    ->setUrl('https//externalApi')
    ->setData(['name' => 'John Doe', 'email' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="98f2f7f0f6fcf7fdd8fde0f9f5e8f4fdb6fbf7f5" rel="noreferrer noopener nofollow">[email protected]</a>'])
    ->setOptions([
       'sslallow_self_signed' => true,
       'sslverify_peer_name'     => false,
      ])
    ->send();
if ($response->isOk) {
    var_dump($response);
}

关于api - YII2 client->createRequest() 忽略验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66151936/

相关文章:

java - 不应成为公共(public) API 一部分的公共(public)包/类

azure - 如何在 Microsoft Azure 应用程序网关上禁用 TLSv1

php - HTTP header 未更改 : yii2

javascript - Yii框架2.0使用POST方法的AJAX请求

html - 如何在 html 中显示绝对路径图像 [ yii2 ]

rest - 如何在 Postman 中自动获取 token

java - 如何转换 Telegram Api 核心日期 :int type into Java Date?

c# - 在 Windows 窗体中显示 SolidWorks 工程图

apache - 在没有收到证书错误的情况下强制使用 HTTPS 并剥离 WWW

ssl - 为什么 Icecast2 不想通过 https 提供流?