我可以只允许某些视图在iframe中呈现吗?
问题描述:
我有一个应用程序在其他网站的iframe内部提供小部件。到目前为止这么好,但我怎么才能让这些小部件视图只能在iframe中加载,而不是直接加载?我可以只允许某些视图在iframe中呈现吗?
这应该工作
<iframe src="http://www.example.com/widgets/example">
但打字http://www.example.com/widgets/example
直接进入浏览器不应该被允许。
什么是或有什么最好的方法来实现这个在rails?
答
请先检查您的网页窗口是一样的父窗口,如果没有,那么你的iframe内页:
function inIframe() {
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
那么如果没有可以在DOM中删除的所有内容:
// Pure JS something like
var myNode = document.getElementById("foo");
myNode.innerHTML = '';
// jQuery
$('html').empty();
或者您可以重定向到一个空白页说,它不允许外面的iframe来看待:
window.location = "http://www.yourul.com/empty_page";
这些小部件存储在模型中吗? – DMH
我有几个模型提供小部件,但它都在widgets_controller下,如果这有帮助? – Cojones
虽然这不是100%的傻瓜证明,你可以传递一个参数在你的iframe上,并在WidgetsController上有一个'before_filter'来检查params的存在。如果没有,它会重定向到您选择的页面。如果您愿意,可以将其作为答案写作。 – DMH