我正在编写一个firefox扩展来读取facebook用户的隐私设置。(不是facebook应用!!)为了在facebook的不同网站之间切换,我使用了iframes,但这已经不起作用了。这个问题我已经有两个星期了。
$('#globalContainer').append('<iframe id="reusable_iframe" src="" width="90%"
height="400" name="reusable_iframe"></iframe>');
//....
$('#reusable_iframe').attr('src', link);
我遵循同源政策,它工作得很好,因为两个星期!?一个例子:
var link = "http://www.facebook.com/editprofile.php?sk=basic";
现在我只得到一个空白的iframe:(
)有趣的是,如果我添加"http://www.youtube.com/embed/Qi_AAqi0RZM"或"http://trololololololololololo.com/"到iframe它的工作没有问题…:/
facebook是否改变了iframe中自己链接的规则?有解决办法吗?是否有其他方法可以让我用firefox扩展扫描不同的网站?我更喜欢使用内容脚本....
编辑:这是它如何看待firebug…同样有趣的是,facebook页面http://www.facebook.com/undefined是工作然而!?<iframe id="areusable_iframe" width="90%" height="400" name="areusable_iframe" src="http://www.facebook.com/">
<html>
<head>
</head>
<body>
</body>
</html>
</iframe>
Facebook向浏览器发送以下响应头:
X-Frame-Options:否认
这导致所有主流浏览器(甚至IE8和更高版本)都阻止在框架内显示它。
旧的方法是"frame buster",使用JavaScript强制页面作为顶部窗口打开,但它非常不友好,所以在大多数不想在框架中显示的现代网站中,它被这个头所取代。
对不起,你也无能为力。
"undefined"页面只是空白内容,这是他们的404
自定义错误页面,因为它不包含上面的标题,它可以显示在框架内。
要了解更多关于X-Frame-Options
头的信息,请参阅本文档