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 可以被任意其他...