0

「HTTP 301」応答をキャプチャするphp + curl関数があります。このページは 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 バージョンです。ありがとう!

4

1 に答える 1

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 さん、返信ありがとうございます。

于 2013-01-16T12:03:18.640 に答える