對於任何基於WEB的應用,最重要的就是安全性.JS中有各種安全檢查以防止惡意腳本攻擊你的機器,其中一些特定的安全手段在各種瀏覽器中都有採用.如:Mozilla有個完全獨特的完全模型,涉及到了簽署腳本和加強特權.我們要知道哪些安全手段是所有瀏覽器通用的,哪些是特定瀏覽器的.這樣就能創建更安全的JS腳本.
同源策略;
JS只能與同一個網域中的頁面進行通訊.如:在http:// domain:port/app1/page.html;上的腳本不能和http://domain:port/app3/page.html;的瀏覽器視窗或iframe 進行互動.不能存取它的cookie,接收它的HTTP回應等(但它可以向任何其他來源發送HTTP請求);AJAX 和webservice 也受此策略管束.這種手段就叫同源策略;
#兩個腳本被認為是同源的條件是:
協定相同(例如都是http://)
埠相同(通常都是80)
#網域相同
如果這三個條件中有任何一條不滿足,就不允許兩個腳本進行交互.如:www.mydomain.com上的腳本不能訪問video.mydomain.com上的頁面,因為兩者的域名不同,雖然後者是前者的子域.同樣,它也不能訪問www.mydomain.com:8080上的頁面,因為端口不同,也不能訪問about:blank 因為協議不同(後者不是http://)
同源策略帶來的影響:
它影響了與BOM,DOM間的交互.如:不可以訪問不同來源的任何頁面的document對象,也就是說不能訪問其中任何DOM結構.如:
頁面上有兩個iframe 分別引用了不同來源;
alert(frames[1].location.href);
alert(frames[ 1].document.location.href);//失敗
window 和document 都有一個location 物件的屬性.如果在與框架頁不同來源的頁面中執行這兩行程式碼,第二行會報錯.
以上是js同源策略是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!