从Classic ASP页面调用PHP + CURL函数

时间:2013-01-15 13:23:32

标签: php curl asp-classic xmlhttprequest

我有一个php + curl函数,可以捕获“HTTP 301”响应。该页面名为get_header.php,位于文件夹/ exe:

function getheader($url)
// Use curl to fetch the HTTP Headers
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1); // just the header
curl_setopt($ch, CURLOPT_NOBODY, 1); // not the body
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
preg_match('/Location: (.*)\n/', $output, $matches);
// if no redirect header then return the original url
return isset($matches[1]) ? $matches[1] : $url;
}
echo(getheader($_GET['url']));

但是,我需要在经典的asp页面中使用这个脚本。我试图通过HTTP调用它:

Dim x: Set x = CreateObject("MSXML2.ServerXMLHTTP")     
Dim y: y = "http://mysite.com/exe/get_header.php?url=" & url
x.Open "GET", y, false 
x.Send()
Dim z: z = x.ResponseText

虽然它有效,但这不是理想的解决方案,因为两个页面都位于同一个域中。事实上,它已经产生了缓慢的请求。那么我怎么能解决这个问题呢?理想的解决方案是我的PHP函数的vbscript或javascript版本。谢谢!

1 个答案:

答案 0 :(得分:1)

以下是解决方案:

Dim x: Set x = CreateObject("WinHttp.WinHttpRequest.5.1")
x.Option(6) = False
x.Open "GET", url, false
x.Send()
If x.status = 301 Then
Dim z: z = x.getResponseHeader("Location")
End If

感谢FAngel的回复!