Cookie跨域操作解決方案Cookie跨域操作

2021-04-17 18:20:19 字數 1940 閱讀 6304

cookie跨域操作解決方案cookie跨域操作

cookie在www主網域名稱下建立,並寫入domain屬性,如:(為方便除錯以下**皆為asp**)

code:

write.asp

<%

response.cookies(cookiename)("username") = "sunbird"

response.cookies(cookiename)("password") = "xyz1234"

response.cookies(cookiename).domain = "***x.com"

%>

上面檔案放在www主網域名稱下,同時在同目錄下放置乙個讀取cookie的read.asp

code:

read.asp

<%

response.write request.cookies(cookiename)("username")

response.write request.cookies(cookiename)("password")

%>

再放乙個read.asp檔案到另外乙個子網域名稱站點裡,**同上。

最後我們再做乙個清除cookie的clear.asp放在主網域名稱下

code:

clear.asp

<%

response.cookies(cookiename)("username") = ""

response.cookies(cookiename)("password") = ""

response.cookies(cookiename).domain = "***x.com"

%>

現在可以通過下面的執行順序來測試,write.asp-->主網域名稱的read.asp-->子網域名稱的read.asp 所有read.asp頁面都可以讀取到write.asp建立的cookie的值

然後再執行clear.asp進行清除,一切都ok,看上去沒有什麼問題。

但是把這種方法運用到實際的站點時卻出現問題了。

問題描述:

第一次登入一切ok,所有子網域名稱都可以訪問到主網域名稱儲存的cookie,但是,一旦退出之後,子網域名稱的cookie被清除了,但是主網域名稱的cookie仍然保留著,強行清除主網域名稱的cookie之後,無論怎樣登入主網域名稱下都無法儲存cookie了,除非關掉瀏覽器重新開啟。

經過多次嘗試之後,無意中發現問題所在,以下是測試經過。

建立乙個write2.asp的頁面放在主網域名稱下

<%

response.cookies(cookiename)("test_cookie") = "test_cookie"

%>

第一步:關閉瀏覽器後,按以下順序執行,write.asp-->主網域名稱的read.asp-->子網域名稱的read.asp 到這裡所有read.asp讀取正常。

第二步:clear.asp-->主網域名稱的read.asp-->子網域名稱的read.asp 到這裡清除操作是成功的。

第三步:write.asp--> write2.asp --> 主網域名稱read.asp --> 子網域名稱read.asp 到這裡兩個read.asp都可以讀取到cookie的值。

第四步:重新執行第二步,發現主網域名稱read.asp仍然輸出了值,而子網域名稱下的read.asp的值已經被清空了。

根據以上測試總結以下幾點再跨域使用cookie時需要注意的地方

1、當你有乙個cookie組(或叫cookie字典)使用domain屬性指定網域名稱之後,當你在對該組的成員進行修改或新增的時候,一定要在操作之後加上resonse.cookies(cookiename).domain屬性。

2、如果沒有必要,請不要修改已設定domain的cookie組,直接使用response.cookies("cookietext") = cookievalue 來建立乙個新的cookie。

Cookie 跨域解決方案(IFrame跨域)

iframe跨域思路 假設有a.haorooms.com text.html和b.haorooms.com text.html兩個頁面,通過a.haorooms.com text.html頁面去修改b.haorooms.com text.html頁面的本地資料 在a.haorooms.com tex...

ajax 跨域cookie解決方案

什麼是session,什麼是cookie?session是由應用伺服器維持的乙個伺服器端的儲存空間,使用者在連線伺服器時,會由伺服器生成乙個唯一的 sessionid,用該sessionid為識別符號來訪問伺服器端的session儲存空間。而sessionid這一資料則是儲存到客戶 端,用cooki...

跨域解決方案

因為瀏覽器出於安全考慮,有同源策略。也就是說,如果協議 網域名稱或者埠有乙個不同就是跨域,ajax 請求會失敗。那麼是出於什麼安全考慮才會引入這種機制呢?其實主要是用來防止 csrf 攻擊的。簡單點說,csrf 攻擊是利用使用者的登入態發起惡意請求。也就是說,沒有同源策略的情況下,a 可以被任意其他...