使用iframe跨域共享cookie

2022-01-30 08:28:11 字數 1052 閱讀 4620

請首先修改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 ...