我需要从 sitemap.xml 文件中获取页面 url 的 http 响应代码。当我通过我的 cron 进程获得响应代码时,它返回 403(称为访问禁止:尽管我可以从浏览器访问传递的 url)。
但如果我从本地主机运行相同的代码,它会返回正确的 http 响应代码(即 200)。
为什么从本地主机和服务器返回不同的http响应代码有区别?如何解决问题?
提取http响应代码的代码如下。
function check_response_code() {
$pageurl='http://www.certona.com/online-merchandising/';
$trimurl = '';
$start = '';
$end = '';
$total = '';
$start = microtime(true);
$response_code = '';
if (!stristr($pageurl, "http://"))
{
if (!stristr($pageurl, "https://"))
{
$trimurl = "http://" . $pageurl;
} else
{
$trimurl = $pageurl;
}
} else
{
$trimurl = $pageurl;
}
$curl = curl_init();
//don't fetch the actual page, you only want headers
curl_setopt($curl, CURLOPT_URL, $trimurl);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FILETIME, true);
$result = curl_exec($curl);
$timestamp = curl_getinfo($curl, CURLINFO_FILETIME);
$response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$mime_type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
$end = microtime(true);
$total = round($end - $start, 5);
if ($timestamp != -1)
{ //otherwise unknown
$arr=array(date("Y-m-d H:i:s", $timestamp), $response_code, $total, $mime_type); //etc
} else
{
$arr=array("", $response_code, $total, $mime_type);
}
echo "<pre>";
print_r($arr);
echo "</pre>";
}
谢谢..