捉\“通过X架,禁止选项显示” [复制](Catching \"Display forbidden

2019-09-01 16:19发布

这个问题已经在这里有一个答案:

  • 如果IFRAME SRC无法加载捕捉错误。 错误: - “拒绝在一个框架中显示‘http://www.google.co.in/’..” 6个答案

据我所知,这个错误是无法克服的。

但我希望做的是,当我遇到不能被嵌入页面,而不是简单的页面加载作为弹出。 什么是目前发生的事情是,我被重定向到该页面。

我在Chrome中看到下面的错误是不能被嵌入的网页。

 Refused to display 'http://www.nokia.com/us-en/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'

Answer 1:

下面是一个类似的答案,提供了一个PHP脚本来检查头的链接: 检测X框选项

因此,它需要一个GET变量,例如你可以修改它:

$error=false;
$urlhere=$_GET["url"];
$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));

然后使用AJAX请求以测试每个URL

$.getJSON("/path/to/script.php?url="+url_variable, function (data) {
   if (data.error) { 
      // code to display pop-up
   } else { 
      // code to display iframe
   }
});


文章来源: Catching \"Display forbidden by X-Frame-Options” [duplicate]