Cookie跨域操作

2021-04-13 13:29:07 字數 2041 閱讀 2634

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工...