我可以在PHP中禁用DNS查找吗?我有IP地址和主机名
我们有一个使用相同域名但不同IP地址的网站镜像-它用于全球缓存 要检查后视镜是否工作,理论上我们可以使用:我可以在PHP中禁用DNS查找吗?我有IP地址和主机名,php,dns,httprequest,Php,Dns,Httprequest,我们有一个使用相同域名但不同IP地址的网站镜像-它用于全球缓存 要检查后视镜是否工作,理论上我们可以使用: $request = new HttpRequest(); ... // IP address of mirror $request->setUrl('http://xxx.xxx.xxx.xxx'); $request->setHeaders(array('host' => 'domainname.com')); ... $request->send(); 但这
$request = new HttpRequest();
...
// IP address of mirror
$request->setUrl('http://xxx.xxx.xxx.xxx');
$request->setHeaders(array('host' => 'domainname.com'));
...
$request->send();
但这会出现一个错误,提示“HttpRequestException”并显示消息“无法解析主机名;…”
我们已经知道了IP地址和主机名,那么有没有办法在PHP中禁用DNS查找?或者在http请求头中
注:
我需要登录并拥有cookies,所以我不能使用ping。此外,网站需要认为它是正确的域,这就是为什么我在标题中使用“主机”
更新1:
尝试将HttpRequest替换为curl,但这会给出相同的错误消息:
$curl = curl_init()
...
curl_setopt($curl, CURLOPT_URL, 'http://xxx.xxx.xxx.xxx');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Host: domainname.com'));
...
if (!curl_exec($curl)) {
echo curl_error($curl);
// Output is 'Couldn't resolve host 'domainname.com'
}
更新2:
啊。。。它看起来像是因为重定向。我也有以下设置
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
在命令行中,这是有效的
curl --header "Host: domainname.com" http://xxx.xxx.xxx.xxx
但当我尝试登录时,它不起作用
curl --header "Host: domainname.com" --location --data "username=username&password=password" http://xxx.xxx.xxx.xxx/login.php
我明白了
我可以保留ipaddress+主机组合吗?或者我必须循环重定向?我不知道HttpRequest,但您可以尝试像这样使用CURL:
只要将URL设置为IP地址,主机头设置为域名,它就可以根据需要工作。为什么要使用主机头?那还不够吗?在最坏的情况下,在端口80上发出TCP-IP请求。谢谢Boris,但我也必须登录-我先登录,然后查看页面是否存在-而且该网站将只使用正确的域名而不是IP地址。谢谢Serge,我认为curl可能是答案-只是看了一下curl vs httprequest-似乎httprequest使用了curl。。。
curl: (6) Couldn't resolve host 'domainname.com'