javascript使用window.name解決跨域問題
更新時間:2008年09月06日 21:51:11 作者:
window.name 的美妙之處:name 值在不同的頁面(甚至不同域名)加載后依舊存在,并且可以支持非常長的 name 值(2MB)。
為了讓 Web 服務(wù)器實現(xiàn) window.name,服務(wù)器應(yīng)該只尋找請求中是否包含 windowname 參數(shù)。如果包含了 windowname 參數(shù),服務(wù)器應(yīng)該返回一個設(shè)置了 window.name 字符串值的 HTML 文檔,回應(yīng)此請求并傳送到客戶端。例如:
http://www.planabc.net/getdata.html?windowname=true
如果服務(wù)器想用 Hello 響應(yīng)客服端,它應(yīng)該返回一個 HTML 頁面:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
同樣也可以轉(zhuǎn)換為 JSON 數(shù)據(jù):
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
如果你手動創(chuàng)建資源,書寫大量的多行的 JSON 對象為一個引用的字符串應(yīng)該是比較困難的并且易于出錯的??梢允褂眠@樣的 HTML 樣例簡單的創(chuàng)建 JSON 數(shù)據(jù),將會轉(zhuǎn)換為一個 JSON 字符串而無需手動轉(zhuǎn)義 JSON 為字符串:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
同樣的,如果你想傳遞 HTML/XML 數(shù)據(jù),這里有一個樣例實現(xiàn),而無需手動將這些數(shù)據(jù)轉(zhuǎn)換成字符串:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
window.name 傳輸技術(shù)相比其他的跨域傳輸?shù)囊恍﹥?yōu)勢:
它是安全的。也就是說,它和其他的基于安全傳輸?shù)?frame 一樣安全,例如 Fragment Identifier messaging (FIM)和 Subspace。(I)Frames 也有他們自己的安全問題,由于 frame 可以改變其他 frame 的 location,但是這個是非常不同的安全溢出,通常不太嚴(yán)重。
它比 FIM 更快,因為它不用處理小數(shù)據(jù)包大小的 Fragment Identifier ,并且它不會有更多的 IE 上的“機關(guān)槍”聲音效果。它也比 Subspace 快,Subspace 需要加載兩個 Iframe 和兩個本地的 HTML 文件來處理一個請求。window.name 僅需要一個 Iframe 和一個本地文件。
它比 FIM 和 Subspace 更簡單和安全。FIM 稍微復(fù)雜,而 Subspace 非常復(fù)雜。Subspace 也有一些額外的限制和安裝要求,如預(yù)先聲明所有的目標(biāo)主機和擁有針對若干不同特殊主機的 DNS 入口。window.name 非常簡單和容易使用。
它不需要任何插件(比如 Flash)或者替代技術(shù)(例如 Java)。
相關(guān)文章
js利用數(shù)組length屬性清空和截短數(shù)組的小例子
這篇文章主要介紹了js利用數(shù)組length屬性清空和截短數(shù)組的小例子,有需要的朋友可以參考一下2014-01-01JS基于Ajax實現(xiàn)的網(wǎng)頁Loading效果代碼
這篇文章主要介紹了JS基于Ajax實現(xiàn)的網(wǎng)頁Loading效果代碼,通過時間函數(shù)結(jié)合數(shù)學(xué)運算實現(xiàn)頁面樣式的動態(tài)變換技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10JavaScript實現(xiàn)網(wǎng)頁下拉菜單效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)網(wǎng)頁下拉菜單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11詳解JavaScript私有類字段和TypeScript私有修飾符
這篇文章主要介紹了JavaScript私有類字段和TypeScript私有修飾符,對私有類感興趣的同學(xué),可以參考下2021-04-04