關於跨域的一些實驗結論

2021-06-26 19:39:38 字數 1917 閱讀 6655

最近要做開發乙個sso框架,中間涉及到跨域設定cookie的問題,順便對一些知識點進行了實驗和確認。本來這都是一些基本的知識點,可是發現網上很多資料雜亂無章而且錯誤百出,有的錯誤文章竟然被轉來轉去,搞的我越看越糊塗。乾脆做個實驗來逐個測試我自己提出的問題。

第乙個:cookie的setdomain屬性到底能不能設定成當前應用程式所在的域之外的網域名稱。比如我當前應用的網域名稱是:www.test1.com,那麼我在當前的應用裡設定cookie的domain為".test2.com",會有什麼效果?瀏覽器會不會接受伺服器返回來的cookie?假如瀏覽器真的接受了服務端返回的cookie,那麼瀏覽器下次真的訪問www.test2.com時到底會不會把之前的cookie給帶上?

現在我寫了兩個web程式,每個web程式都有乙個servlet,同時修改host檔案,第乙個應用的網域名稱是:www.test1.com,第二個網域名稱是:www.test2.com。並且使用火狐狸和ie10來做測試,測試過程如下:

2)現在我們設定www.test1.com的網域名稱為自己,那麼如果我們在www.test1.com的網頁中使用iframe嵌入www.test2.com的應用,那麼會是什麼結果?

首先我們訪問了www.test1.com,這個時候www.test1.com和www.test2.com的cookie都寫到瀏覽器裡了,無論是在ie還是在火狐狸裡都是如此,那麼再次訪問www.test1.com的時候,ie和火狐狸這個時候不同的地方就顯示出來了。這個時候ie只會把www.test1.com的cookie帶上,而不會帶www.test2.com的cookie的(也就是說在www.test2.com的應用裡是拿不到cookie的),而且這個時候你再次專門訪問www.test2.com也不會拿到之前明明已經寫入到瀏覽器裡www.test2.com網域名稱下的cookie。而如果在火狐狸裡,則www.test1.com的應用中會取到www.test1.com的cookie,而且無論是iframe內嵌或者直接訪問www.test2.com的應用裡都會拿到自己網域名稱下的cookie。這種情況使用

3)如果我們非要www.test1.com中利用iframe內嵌www.test2.com的方式來將test2.com網域名稱下的cookie帶過去給www.test2.com服務應用,那該怎麼辦?

這個非常簡單,設定www.test2.com的head,比如response.setheader設定p3p。關於p3p協議網上資料一大堆,大家可以自己看看。這裡要注意,我們在www.test1.com使用iframe嵌入www.test2.com的應用,則www.test1.com設定的cookie就是通常意義的第一方cookie,而www.test2.com的cookie就是常說的第三方cookie,我們要設定p3p是要在第3方的程式中設定,這個很多資料裡也沒有說明白。其實就是www.test2.com的服務端和瀏覽器協商,讓瀏覽器允許其攜帶上cookie給服務端。一旦突破這點,再結合referer首部屬性就能獲取使用者的瀏覽習慣和喜好,像經常購買書籍、電子產品等。比如:a**嵌入了b**的乙個頁面,並且b**設定了p3p,那麼當使用者訪問a**的時候會順便訪問b**,這個時候b**就隨機生成乙個id,將這個id寫入到cookie,並將這個id和referer資訊存入自己的資料庫。下次,無論是c**或者其他**內嵌了b,被使用者訪問了,也或者是使用者又訪問a,都會順便訪問b**並且將referer和id存入資料庫,如果使用者用的是同乙個瀏覽器並且從來不清理cookie,這樣cookie中記錄的id就不變,每次訪問就會把b的cookie帶上,b**根據cookie中的id和多次存入資料庫的referer就能知道你都登入了哪些**。因為referer的鏈結說明了所有問題。這樣就可以做到對這個人的跟蹤和分析。就好比我把我的眼線放在100商店,你訪問各個商店時,他們就把你的購買什麼的情況告訴我,天長日久我就知道你喜歡買什麼了,不知道這個例子是否準確。

暫時先寫到這裡吧,這個問題也是首次稍微深入探索下,後邊根據進展再補充吧,如果有錯誤請讀者一定指正不勝感激。總之,這種基礎知識是設計框架的基石,必須要搞清楚。否則,寢食難安、芒刺在背。

關於跨域的問題一些見解

cors是乙個w3c標準,全稱是 跨域資源共享 cross origin resource sharing cors需要伺服器端配合才能完成跨域資源請求。1.普通請求瀏覽器會直接傳送1次請求 1 如果伺服器端允許當前請求源訪問,則響應頭會返回access control allow origin欄位...

關於外來鍵的一些非正式結論

對於主 外來鍵 索引來說,在一些開發團隊中被認為是處理資料庫關係的利器,也被某些開發團隊認為是處理某些具體業務的魔鬼,您的觀點呢?在實際應用中您會採取哪種方式?矛盾焦點 資料庫設計是否需要外來鍵。這裡有兩個問題 乙個是如何保證資料庫資料的完整性和一致性 二是第一條對效能的影響。正方觀點 1,由資料庫...

關於外來鍵的一些非正式結論

對於主 外來鍵 索引來說,在一些開發團隊中被認為是處理資料庫關係的利器,也被某些開發團隊認為是處理某些具體業務的魔鬼,您的觀點呢?在實際應用中您會採取哪種方式?矛盾焦點 資料庫設計是否需要外來鍵。這裡有兩個問題 乙個是如何保證資料庫資料的完整性和一致性 二是第一條對效能的影響。正方觀點 1,由資料庫...