cookie跨域操作看來是個簡單的問題,因為只要指定domain屬性為指定**的根網域名稱就可以了.
但是筆者在實際使用過程中卻遇到了一些問題,的確值得注意.
環境介紹
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跨域操作解決方案Cookie跨域操作
cookie跨域操作解決方案cookie跨域操作 cookie在www主網域名稱下建立,並寫入domain屬性,如 為方便除錯以下 皆為asp code write.asp response.cookies cookiename username sunbird response.cookies c...
ajax跨域與cookie跨域
ajax跨域取資料 利用可以跨域載入js的原理 functioncallback 這是需要返回這樣乙個js函式 ajax資料型別使用jsonp 如 ajax url callbask x datatype jsonp type get 在使用資料型別為jsonp時,jquery自動會在url路徑上拼...
cookie跨域問題 跨域登入
cookie跨域時修改不成功,需要在刪除 或者修改時 設定domain值與存入的domain一致,跨域修改cookie不會成功。例如 login.abc.com login工程 www.abc.com abc工程 www.abc.com login.html呼叫login工程的登陸介面 login工...