如何在頁面加載期間將我的網頁作爲框架嵌入到其他網站?我猜引用者請求標題不能幫助我在這裏?謝謝。如何防止我的網站頁面通過iFrame的第三方網站框架進行加載
回答
你不能從服務器端檢查它,但你可以在頁面加載後使用javascript來檢測它。比較top
和self
,如果它們不相同,則表示您在框架中。
此外,一些現代瀏覽器尊重X-FRAME-OPTIONS
頭,可以有兩個值:
- DENY - 阻止頁面從如果它被包含在一個幀
- SAMEORIGIN正在呈現 - 與上述相同,除非頁面與頂級框架集持有者屬於同一個域。
用戶包括Google的Picasa,無法嵌入到框架中。
瀏覽器支持的標題,與所述最低版本:
- IE8和IE9
- 歌劇10.50
- 的Safari 4
- 鉻4.1.249.1042
- 火狐3.6.9(較老的版本與NoScript)
Stac koverflow包含一些JS來測試它(master.js
)。這是它的相關部分:
if(top!=self){
top.location.replace(document.location);
alert("For security reasons, framing is not allowed; click OK to remove the frames.")
}
但請記住,JS可以被禁用。
如果您想要將消息發送給將您的內容放入iframe中的人,或者他們的網站的最終用戶正在iframe中查看您的內容,則此方法特別有用。 – kevinmicke 2017-08-02 18:40:33
使用javascript通過在php文件的末尾放置以下腳本來檢查它是否加載到iframe上,並重定向到顯示警告的頁面,或者注意您的頁面不應該使用iframe加載。
<script type="text/javascript">
if(top.location != window.location) {
window.location = '/error_iframe.php';
}
</script>
或者你可以阻止某個特定的域名,如果你不介意你的內容在某些位置,但不希望它在某個網站上。例如,如果offendingdomain.com
被嵌入你的內容,你可以這樣做:
<script type="text/javascript">
if(document.referrer.indexOf("offendingdomain.com") != -1) {
window.location = "http://www.youtube.com/watch_popup?v=oHg5SJYRHA0";
}
</script>
這將檢查父文件的位置,看它是否被嵌入你的內容的offendingdomain.com
。然後,該腳本會將該iframe發送給某個着名的YouTube視頻作爲懲罰。實際上,他們只是Rick-Rolled自己。
可以防止你的頁面加載在一個iframe使用JavaScript
<script type="text/javascript">
if (window.self !== window.top) {
window.top.location.href=window.location.href;
}
</script>
頁面的iframe的容器的這個代碼變更地址到你的頁面地址和力容器,顯示你的頁面。
iframe上的'sandbox'屬性允許禁止這樣的框架轉義黑客。因此,這種方式並不是防止取景的安全方式,以防您的擔憂是安全問題。 – 2015-09-03 13:21:56
對於modern browsers,您可以使用CSP(內容安全策略),這是一個標準。下面標頭將阻止加載文檔中任何地方的幀:
Content-Security-Policy: frame-ancestors 'none'
(IE 11需要X-
前綴,雖然)。您還可以將'none'
更改爲允許進行取景的來源,例如您自己的網站。
要覆蓋較舊的瀏覽器,最好與@Maerlyn's answer一起使用。
你的回答不夠清楚,所有應有的尊重。這是頭文件代碼還是PHP?例如。 – 2016-08-11 13:39:32
@GaryCarlyleCook這是一個HTTP頭,應該是服務頁面時瀏覽器響應的一部分。這不是PHP代碼,儘管你可以使用PHP發送它;看[header()](http://php.net/manual/en/function.header.php) – rvighne 2016-08-11 15:33:43
- 1. 我的網站如何登錄vistor進入第三方網站?
- 2. 如何阻止我的網站在其他網站加載iframe
- 3. 如何防止iframe中的網站刷新整個網站?
- 4. 如何防止網站通過圖像將Cookie放入我的網站?
- 5. 網站框架內的網站? (iframe討厭我)
- 6. 如何防止其他網站將我的網頁放入其iframe中?
- 7. 從第三方網站的bookmarklet載入iframe CakePHP Session
- 8. JS彈出我的網頁在第三方網站
- 9. 如何通過在Webview中加載的網站進行替換
- 10. 如何防止我的網站代理網站作爲釣魚網站報告
- 11. 如何防止在我的網站上進行XSS注射?
- 12. 從我的網站不加載iframe
- 13. 登錄第三方網站
- 14. 網站頁面內的網站頁面
- 15. 防止XSS HTML表單從第三方網站
- 16. 從我的網站加載網站
- 17. 如何在我的網站添加iframe
- 18. 如何防止外部JS阻止您的網站加載?
- 19. html頁面和iframe裏面通過ajax加載是整個網站更新
- 20. 如何改進我的網站架構?
- 21. 框架需要加載一個網站之前頁面顯示
- 22. 自動登錄到不同的網站,並在我的網站頁面的iframe中運行此網站?
- 23. 網站包括我的網站的頁面/頁面
- 24. 第三方網站如何檢查用戶是否同意/通過我的網站,以便他們可以讓他通過他們的網站?
- 25. 加載一個網站作爲我的網站框架(谷歌分析)
- 26. 如何預填充第三方網站上的文本框?
- 27. 通過圖像監控第三方網站的流量
- 28. 如何在iframe中將第三方會話整合到我的網站中?
- 29. 防止我的網站最初加載壞的CSS
- 30. 從整個網站下載的防止?
嗨,約翰,我不能說我需要完整的解決方案在這裏,只是移動的方向就夠了,在我找到我的問題的答案後,我總是發佈它作爲答案,這是我能參與的唯一方式在社區。 – abovesun 2010-05-25 08:44:47
注意:設置元標記是沒用的!例如,不起作用。不要使用它!只有像下面的例子那樣設置HTTP頭,X-Frame-Options才能工作。 https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/X-Frame-Options – 2017-08-16 00:14:00