【发布时间】:2015-08-03 07:21:26
【问题描述】:
我正在开发一个 PHP 网站,除非我愿意,否则它的某些网页(由用户生成)不得嵌入到其他域的 iframe 中,这一点至关重要。
有没有办法做到这一点?我注意到,即 Vimeo 为高级用户提供了一个可以嵌入视频的域列表,所以我想这在某些方面是可能的,尽管我还没有找到任何东西......
谢谢!
【问题讨论】:
-
在url中使用掩码,通过登录凭证系统控制访问...
我正在开发一个 PHP 网站,除非我愿意,否则它的某些网页(由用户生成)不得嵌入到其他域的 iframe 中,这一点至关重要。
有没有办法做到这一点?我注意到,即 Vimeo 为高级用户提供了一个可以嵌入视频的域列表,所以我想这在某些方面是可能的,尽管我还没有找到任何东西......
谢谢!
【问题讨论】:
您可以在不允许作为/在 iframe 中的页面上包含一个 javascript 代码,该代码会重定向顶部框架,并且 iframe 在大多数情况下变得无用。
if ( window.self !== window.top ) {
window.top.location.href = window.location.href;
}
大多数现代浏览器也尊重标题字段X-FRAME-OPTIONS,可以设置为DENY(页面未显示在框架内)或SAMEORIGIN(与DENY相同,但仅当域不同时)。
【讨论】:
看看referrer。
if (!in_array($_SERVER['HTTP_REFERER'], $allowedReferers)) {
// STOP !!!!
echo "not today baby!";
die();
}
// GO !!!!
【讨论】:
$_SERVER['HTTP_REFERER'] 并不总是可靠的 => stackoverflow.com/a/6023980
HTTP_REFERER 和 JS 在渲染开始时检查内容。