請首先修改hosts檔案來模擬本機跨域
127.0.0.1 localhost
127.0.0.1 b.com
127.0.0.1 a.com
我們的目的:
由a.com登入,如果登入成功,就生成a.com的cookie。而對於b.com則無需再次登入。
遇到的困難:
瀏覽器同源策略限制,即a站點頁面的指令碼是無法直接操縱b站點的內容。
試想如果所有第三方**都可以對taobao.com的首頁任意篡改,那這個社會還有什麼安全性可言呢?
其實瀏覽器的安全策略邏輯很簡單,就是我的地盤我做主,出了我的地盤我做不了主。
解決方案:
a.com根據使用者輸入操作a.com的cookie,b.com根據使用者在a.com得到的輸入資料來操作b.com的cookie。
如何在a.com使用者輸入a.com的使用者資料時同時提交到b.com的驗證頁面呢?
這時候iframe就派上用場了。
$b?>setcookie.php" />
請注意form表單的相關屬性,b.com/setcookie.php頁面就是驗證a.com使用者的輸入然後生成b.com的cookie,這樣後續訪問b.com無需再次輸入使用者名稱和密碼。
缺點:
需要先設定跨域站點的cookie然後再來設定本域的cookie;
如果跨域站點請求耗時較長,直接影響本域的操作時間;
另外也需要額外的**來處理跨域站點請求失敗後的操作
ie中需要設定接受cookie(隱私),這一點比較不方便。
附件:/files/1000/xdm.rar
測試方法:
1)按文章開頭修改hosts檔案
2)登入a.com/default.php
3)輸入表單資料
4)點選a.com/default.php下面的鏈結就可以在b.com/getcookie.php看到b.com的cookie
iframe跨域通訊
簡述 window.postmessage方法,允許跨視窗通訊,不論這兩個視窗是否同源。視窗都可以通過message事件,監聽對方的訊息。語法 otherwindow.postmessage message,targetorigin,transfer message 傳送的內容。targetorgi...
iframe解決跨域
iframe的使用a域中有parent.html,b域中有child.html.b域中的伺服器要監聽所有b域下所有child.html,並且兩個域之間要交換資料.那麼在a域中嵌入iframe 如 parent.html document.domain ip a域的ip或網域名稱 去掉www 函式fu...
iframe跨域訪問
子iframe使用jquery訪問父頁面時,報錯uncaught domexception blocked a frame with origin url from accessing a cross origin frame.這是跨域導致的 設host 進行網域名稱重定向,開啟c windows ...