由于您的脚本和目标 URL 位于不同的域中,JavaScript 的跨域策略不允许您访问标头。几个月前我遇到了同样的问题,最终使用 JavaScript 向 PHP 文件发送 AJAX 请求,然后该文件可以解析标头。
这是我在 PHP 文件中的内容。然后这将在 JSON 数组中返回结果。如果有帮助,请告诉我!
$error=false;
$urlhere='http://facebook.com';
$ch = curl_init();
$options = array(
CURLOPT_URL => $urlhere,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10,
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch);
$headers=substr($response, 0, $httpCode['header_size']);
if(strpos($headers, 'X-Frame-Options: deny')>-1||strpos($headers, 'X-Frame-Options: SAMEORIGIN')>-1) {
$error=true;
}
$httpcode= curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo json_encode(array('httpcode'=>$httpcode, 'error'=>$error));
我知道这不是一个理想的回应,但这就是我可以处理我的项目的全部内容。
编辑:正如比尔在下面所述,如果您更改strpos()
为,stripos()
您可能会获得更好的结果,因为它会运行不区分大小写的搜索。