向显式给定的 IP 发出请求,但使用显式给定的主机名进行 SSL 验证?

Szc*_*ski 2 php https guzzle

有没有办法同时告诉GuzzleHttp\\Client

\n\n
    \n
  • 将请求发送到明确指定的 IP,并且
  • \n
  • 为了进行 SSL 验证而“假装”请求是针对特定主机名发出的?
  • \n
\n\n

由于超出此问题范围的原因,我不能简单地将“ https://some.host.name/uri ”作为请求 URL 传递。我必须通过https://<some-numeric-IP>/uri ”并设置Host标头。但是,当我这样做时,Guzzle 会出于HostSSL 主机和对等验证的目的而忽略标头,并尝试使用数字 IP 地址,这失败了。

\n\n

如何获取WhatIWant\xe2\x84\xa2?

\n

Szc*_*ski 5

尽管评论中讨论了所有“XY 问题”,但这实际上是 100% 纯粹的“Y 问题”,解决方案如下:

$client = new GuzzleHttp\Client([
    'curl' => [CURLOPT_RESOLVE => ['fakedomain.dev:80:127.0.0.1']],
]);
Run Code Online (Sandbox Code Playgroud)