防止網(wǎng)頁被嵌入框架的代碼

為了防止其他網(wǎng)站使用框架(Frame)抄淑,將你的網(wǎng)頁嵌入它的網(wǎng)頁中吸耿。可以將下面一段簡單的Javascript代碼放入網(wǎng)頁源碼的頭部靖榕,別人就無法使用你的網(wǎng)頁了:

<script>
  if(window!=top) //判斷當前的window對象是否top對象
  {
    //如果不是蓖谢,將top對象的網(wǎng)址自動導向被嵌入網(wǎng)頁的網(wǎng)址
    top.location.href = window.location.href; 
  }
</script>

但這段代碼使用后,任何人都無法再把你的網(wǎng)頁嵌入框架了譬涡,包括你自己闪幽。
那有沒有一種方法,使得我的網(wǎng)頁只能只能嵌入我自己的框架涡匀,而不是別人的框架呢盯腌?

表面上看,這個問題很簡單陨瘩。只要做一個判斷:當前框架和頂層框架的域名是否相同腕够,如果答案是否级乍,就做一個URL重定向。

if(top.location.hostname !=   window.location.hostname){
  top.location.href = window.location.href;
}

但是出乎意料的是帚湘,這樣寫是錯誤的玫荣,根本無法運行。

假定 top.location.hostname 是 www.111.com大诸,而 window.location.hostname 是 www.222.com捅厂。也就是說,111.com222.com 嵌入了它的網(wǎng)頁资柔。這時比較 top.location.hostname != window.location.hostname 會有什么結(jié)果呢焙贷?

瀏覽器會提示代碼出錯。

因為它們跨域(cross-domain)了贿堰,瀏覽器的安全策略不允許 222.com 的網(wǎng)頁操作 111.com 的網(wǎng)頁辙芍,反之亦然。IE 把這種錯誤叫做“沒有權(quán)限”羹与。進一步說故硅,瀏覽器甚至不允許你查看 top.location.hostname,跨域情況下注簿,一看到這個對象契吉,就直接報錯。

那么诡渴,代碼應該如何修改捐晶?

事實上,這提示我們妄辩,只要查看 top.location.hostname 是否報錯就可以了惑灵。如果報錯,表明存在跨域眼耀,就對 top 對象進行 URL 重定向英支;如果不報錯,表明不存在跨域(或者未使用框架)哮伟,就不采取操作干花。

try{
  top.location.hostname;
}catch(e){
  top.location.href = window.location.href;
}

這樣寫已經(jīng)正確了,在 IE 和 Firefox 中可以正確運行楞黄。但是池凄,Chrome 瀏覽器會出現(xiàn)錯誤,不知為何鬼廓,在跨域情況下肿仑,Chrome 對 top.location.hostname 不報錯!

沒辦法,只能為了 Chrome尤慰,再加一段代碼馏锡。

try{
  top.location.hostname;
  if(top.location.hostname != window.location.hostname){
      top.location.href = window.location.href;
  }
}catch(e){
  top.location.href = window.location.href;
}

好了,現(xiàn)在除了本地域名伟端,其它域名一律無法將你的網(wǎng)頁嵌入框架杯道。
<br />
來源:防止網(wǎng)頁被嵌入框架的代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荔泳,隨后出現(xiàn)的幾起案子蕉饼,更是在濱河造成了極大的恐慌,老刑警劉巖玛歌,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昧港,死亡現(xiàn)場離奇詭異,居然都是意外死亡支子,警方通過查閱死者的電腦和手機创肥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來值朋,“玉大人叹侄,你說我怎么就攤上這事∽虻牵” “怎么了趾代?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丰辣。 經(jīng)常有香客問我撒强,道長,這世上最難降的妖魔是什么笙什? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任飘哨,我火速辦了婚禮,結(jié)果婚禮上琐凭,老公的妹妹穿的比我還像新娘芽隆。我一直安慰自己,他們只是感情好统屈,可當我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布胚吁。 她就那樣靜靜地躺著,像睡著了一般愁憔。 火紅的嫁衣襯著肌膚如雪腕扶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天惩淳,我揣著相機與錄音蕉毯,去河邊找鬼。 笑死思犁,一個胖子當著我的面吹牛代虾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播激蹲,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼棉磨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了学辱?” 一聲冷哼從身側(cè)響起乘瓤,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎策泣,沒想到半個月后衙傀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡萨咕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年统抬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片危队。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡聪建,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茫陆,到底是詐尸還是另有隱情金麸,我是刑警寧澤,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布簿盅,位于F島的核電站挥下,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挪鹏。R本人自食惡果不足惜见秽,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讨盒。 院中可真熱鬧解取,春花似錦、人聲如沸返顺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遂鹊。三九已至振乏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秉扑,已是汗流浹背慧邮。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工调限, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人误澳。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓耻矮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親忆谓。 傳聞我的和親對象是個殘疾皇子裆装,可洞房花燭夜當晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,767評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)倡缠,斷路器哨免,智...
    卡卡羅2017閱讀 134,631評論 18 139
  • 搜索引擎就像一個無限大的智能倉庫,他可以存儲一切不管有用無用東西昙沦,當你說你餓了的時候琢唾,他會告訴你哪個貨架上放著米飯...
    產(chǎn)品二三事閱讀 818評論 0 2
  • 累了一天,終于等到了那個時刻盾饮,所謂的歸心似箭也許就是這個感覺…… 休息了慧耍,卻睡不著,那些一起走過...
    素箋_淡墨閱讀 191評論 0 1
  • 今晚兒子又忘記拿作業(yè)了丐谋,老公接他回來芍碧,他趴在門口小心翼翼的跟我說:“媽,我保證這是最后一次号俐,”我沒有說話泌豆,因為我很...
    六年級三班陳楓媽媽閱讀 213評論 0 2