9

curl --resolve ....PHP CURL 库中是否有等价物?

背景:我有循环 DNS(一个域名解析为多个 IP),我想向特定主机发送请求。我使用基于 apache 名称的虚拟主机,因此 HTTP 请求中必须出现正确的域名。

我尝试在请求 URL: 中指定 IP curl_setopt($ch, CURLOPT_URL, '127.0.0.1'),并使用curl_setopt($ch, CURLOPT_HTTPHEADER, 'Host: example.com'). 它适用于 HTTP,但对于 HTTPS,我收到 SSL 验证错误(显然 CURL 验证证书与 URL 主机名而不是Host:主机名)。

使用hosts文件不是一个方便的选择。

4

3 回答 3

16

首先,了解任何curl 选项如何转换为 libcurl(或 PHP/CURL)的最佳方法是使用--libcurl选项。

如果您这样做,您将了解到--resolve使用 libcurl转换为CURLOPT_RESOLVE,PHP自 5.5.0 起支持该功能。自7.21.3起受 libcurl 支持。

于 2012-05-03T20:28:53.360 回答
1

在 Python 的帮助下,我有一个解决方案。

在 .php 文件中,只需回显 python 的输出:

<?php
echo passthru("python python.py");
?>

在 python.py 中:

import httplib
conn = httplib.HTTPSConnection('127.0.0.1');
url = "example.com"
conn.request("GET", url)
content = conn.getresponse()
print content.read()
conn.close()
于 2013-09-27T06:37:26.060 回答
0

如果您打算分叉另一个进程,只需使用“--resolve”选项分叉 curl 本身,而不是另一个脚本。

于 2014-04-04T18:53:13.233 回答