顶级域名和二级域名共享cookie及相互删除cookie
在CSDN看到一個cookie設置domain時,如何刪除的問題,
自己也只知道domain設置為頂級域名時可以被其他二級域名共享,但是如何刪除還是有一點搞不清楚,所以特意測試了下cookie和domain之間的關系,下面是一些測試結果的總結
設置cookie
非頂級域名,如二級域名或者三級域名,設置的cookie的domain只能為頂級域名或者二級域名或者三級域名本身,不能設置其他二級域名的cookie,否則cookie無法生成。
頂級域名只能設置domain為頂級域名,不能設置為二級域名或者三級域名,否則cookie無法生成。
如www.abc.com能設置domain為abc.com或者www.abc.com,但不能設置domain為news.abc.com,這樣cookie不會生成。
+展開
-C#
HttpCookiehc=newHttpCookie("abc","123");
hc.Domain="news.abc.com";//////
hc.Expires=DateTime.Now.AddDays(1);
Response.Cookies.Add(hc);//==========這樣cookie無法生成
abc.com只能設置domain為abc.com,不能為www.abc.com等2級域名,如果設置為其他domain二級域名,cookie無法生成。
+展開
-C#
HttpCookiehc=newHttpCookie("abc","123");
hc.Domain="www.abc.com";///////////
hc.Expires=DateTime.Now.AddDays(1);
Response.Cookies.Add(hc);//==========這樣cookie無法生成
未指定domain時,默認的domain為用哪個域名訪問就是哪個,如果為頂級域名訪問,那么可以被其他2級域名共享。
讀取cookie
二級域名能讀取設置了domain為頂級域名或者自身的cookie,不能讀取其他二級域名domain的cookie。所以要想cookie在多個二級域名中共享,需要設置domain為頂級域名,這樣就可以在所有二級域名里面或者到這個cookie的值了。
頂級域名只能獲取到domain設置為頂級域名的cookie,其他domain設置為二級域名的無法獲取。
刪除cookie
1)頂級域名的cookie在頂級域名或者2級域名都可以刪除,但是用非頂級域名訪問的網站要刪除頂級域名的cookie,需要設置獲取到的cookie的domain為頂級域名,這樣才能刪除頂級域名的cookie,否則無法刪除,默認的會刪除訪問的域名下對應的cookie,而不是頂級域名的。
+展開
-C#
HttpCookiehc=Request.Cookies["abc"];
if(hc!=null)
{
hc.Domain="abc.com";/////指定為頂級域名則可以在其他二級域名中刪除頂級域名的cookie,否則默認刪除的是本域名下的cookie
Response.Write("刪除域名Cookie!
");
hc.Expires=DateTime.Now.AddDays(-1);
Response.Cookies.Add(hc);
}
2)刪除2級域名自身生成的cookie不需要設置domain,可以直接刪除。
下面為完整的測試示例,大家自己可以測試一下,注意后面標注了/////////的代碼,這些是關鍵,也注意修改修改代碼中設置的域名,我這里為了方便,直接設置了系統hosts文件將abc.com作為測試。
+展開
-HTML
<%@PageLanguage="C#"%>
<scriptrunat="server">
privatevoidSetCookie(stringname,stringvalue,stringdomain)
{
HttpCookiehc=newHttpCookie(name,value);
hc.Domain=domain;////////
hc.Expires=DateTime.Now.AddDays(1);
Response.Cookies.Add(hc);
}
privatevoidReadCookie(stringname)
{
HttpCookiehc=Request.Cookies[name];
if(hc!=null)Response.Write("設置的Cookie為:"+hc.Value+"|"+hc.Domain);
elseResponse.Write("Cookie值為空!");
}
privatevoidDeleteCookie(stringname,stringdomain)
{
HttpCookiehc=Request.Cookies[name];
if(hc!=null)
{
hc.Domain=domain;////////
Response.Write("刪除域名Cookie!
");
hc.Expires=DateTime.Now.AddDays(-1);
Response.Cookies.Add(hc);
}
}
protectedvoidPage_Load(objectsender,EventArgse)
{
//SetCookie("abc","abc.com--"+DateTime.Now.ToString(),"www.abc.com");
ReadCookie("abc");
//DeleteCookie("abc","abc.com");
}
script>
總結
以上是生活随笔為你收集整理的顶级域名和二级域名共享cookie及相互删除cookie的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 畅玩游戏无忧 倍思氮化镓桌面快充充电器
- 下一篇: 重塑数字化关系是数字化经济的趋势之一--