繁体   English   中英

PHP cURL不适用于 - 在子域中

[英]PHP cURL doesn't work with - in subdomains

我有一个PHP脚本,我正在尝试获取页面的内容。 我正在使用的代码如下

$url = "http://test.tumblr.com";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$txt = curl_exec($ch);
curl_close($ch);

echo "$txt";

它现在对我来说很好。 我遇到的问题是,如果我将字符串URL更改为

$url = "http://-test.tumblr.com"; $url = "http://test-.tumblr.com";

不起作用。 我知道-test.example.com或test-.example.com不是有效的主机名,但是使用Tumblr它们确实存在。 有没有解决这个问题?

我甚至尝试在另一个php文件上创建标题重定向,因此cURL将首先获得有效的主机名,但工作方式相同。

谢谢

带连字符的域名

正如您在上一个关于子域中允许的字符的问题中所看到的那样, -不是用于启动或结束子域的有效字符。 所以这实际上是正确的行为。 curl 邮件列表上报告了同样的问题,但由于curl遵循标准,实际上他们的网站上没有任何改变。

很可能tumblr知道这一点,因此提供了一些通往同一站点的替代地址。

可能的解决方法

但是,您可以尝试使用nslookup手动查找IP,然后将请求直接发送到此IP(并手动将主机名设置为正确的值)。 我没有试过这个,但似乎nslookup能够解决以连字符开头或结尾的格式错误的域名。

卷曲

另外你应该知道,php curl函数应该是curl命令行工具的直接接口,因此,如果你遇到特殊行为,很可能是由于curl命令行工具中的逻辑而不是php函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM