同源是js對能操作那些web內容的一條完整的安全限制。當web頁面打開其他瀏覽器窗口,或使用iframe的時候,就會發揮作用。
即,腳本只能讀取和所屬文件來源相同的視窗和文件的屬性。
文件的來源包含協議,主機,載入文件的url連接埠。從不同web伺服器載入的文件有不同的來源,同過同一主機的不同連接埠所載入的文件也有不同的來源。使用http和https的也是不同的來源,因為協議不同。
即,協議,主機, 載入文件的url端口,完全和文件的相同,才能允許腳本讀取文件內容。
但是對於腳本本身的來源沒有任何的關係。
舉例
腳本a是包含在一個來自主機b文檔bb的,也就是腳本a可以存取文件bb的所有的內容。
腳本a又開啟了一個來自於主機c的cc文檔,由於來源不同,腳本a不能存取文檔cc的內容。但是如果腳本a又打開一個來自主機b的文檔bbb,這時,腳本a可以訪問文檔bbb(此時是在兩個不同的窗口下,也可以實現訪問)
如果腳本打開一個窗口,腳本也可以關閉,但不能以任何方式查看視窗內部。
本機使用web server for chrome 啟動服務。修改host文件,解析home.abc.com 以及abc.com到這兩個網域
訪問,http://home.abc.com:8887/ 以及http://abc.com:8887/都來自同一台主機127.0.0.1
這樣就完成了一個最簡單的本機伺服器的搭建
> document.domain "home.abc.com"
只允許請求home.abc.com來源的網站。
設定
> document.domain = "abc.com"; "abc.com"
這樣就設定了一個同源,對於
*.abc.com
的請求,當做全部同源。
設定相同的document.domain,如果兩個值相同,則腳本可以互相存取。不會受到同源的約束。
使用Origin擴充http,確保資源共享
#https://developer.mozilla.org...
#明確的列出所有來源。根據Origin的值,列出來源,避免再次跨來源
使用postMessage()方法,非同步傳遞訊息事件
在web瀏覽器中,js被用作許多軟體和外掛程式的腳本引擎。
ActiveX 網路銀行用的多,╮(╯▽╰)╭
很老很老的技術了。 。 3721。 (⊙o⊙)
客戶端js沒有權限寫入刪除客戶電腦上的任意檔案或列出任意目錄。即js程式不能刪除資料或植入病毒。
客戶端的js沒有任何通用的網路能力,客戶端js程式可以對http協定編程,並且有套接字的api,用於指定伺服器通信,但是都不能進行更大範圍,更廣的網路進行訪問。
相關文章:
相關影片:
以上是js同源策略:操作web內容的一條完整安全限制的詳細內容。更多資訊請關注PHP中文網其他相關文章!