我有一個應用程序在其他網站的iframe內部提供小部件。到目前爲止這麼好,但我怎麼才能讓這些小部件視圖只能在iframe中加載,而不是直接加載?我可以只允許某些視圖在iframe中呈現嗎?
這應該工作
<iframe src="http://www.example.com/widgets/example">
但打字http://www.example.com/widgets/example
直接進入瀏覽器不應該被允許。
什麼是或有什麼最好的方法來實現這個在rails?
我有一個應用程序在其他網站的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