首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获“显示被X-Frame-Options禁止”

捕获“显示被X-Frame-Options禁止”
EN

Stack Overflow用户
提问于 2013-05-02 01:26:29
回答 1查看 2.2K关注 0票数 4

我明白这个错误是无法克服的。

但我想要做的是,当我遇到一个无法嵌入的页面时,该页面只是作为弹出窗口加载。目前发生的情况是,我被重定向到该页面。

对于无法嵌入的页面,我在chrome中看到以下错误。

代码语言:javascript
复制
 Refused to display 'http://www.nokia.com/us-en/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-27 22:27:32

下面是一个类似答案的链接,它提供了一个用来检查标题的PHP脚本:Detect X-Frame-Options

您可以修改它,使其接受GET变量,如下所示:

代码语言:javascript
复制
$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。

代码语言:javascript
复制
$.getJSON("/path/to/script.php?url="+url_variable, function (data) {
   if (data.error) { 
      // code to display pop-up
   } else { 
      // code to display iframe
   }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16323151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档