欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
跨子域的Cookie的清除問(wèn)題
  跨子域的Cookie的清除問(wèn)題 收藏
我兩個(gè)子域名,用Cookie實(shí)現了單點(diǎn)登錄,這個(gè)簡(jiǎn)單,很快就實(shí)現了。
可是傳上去才發(fā)覺(jué),無(wú)法登出了,Cookie清除不了。
在網(wǎng)上看到臺灣人寫(xiě)的這篇文章,總算解決。
鬼打牆事件之『ASP.NET 無(wú)法刪除 Cookie 的問(wèn)題』
先將我的執行環(huán)境說(shuō)明一下:
我有兩個(gè)網(wǎng)站,網(wǎng)域分別為 www1.domain.com 與 www2.domain.com
自己實(shí)做單一簽入(Single Sign On, SSO)的機制,並透過(guò) Web Service 進(jìn)行網(wǎng)站會(huì )員登入、登出
兩個(gè)網(wǎng)站共用同一組 Cookie 用以?xún)Υ?SSO 的 Token,且明訂 Cookie 的 Domain 為 .domain.com
我今天聚焦在「登出」這個(gè)簡(jiǎn)單的功能就好,實(shí)作登出是在簡(jiǎn)單不過(guò)的機制了,就是把 Cookie 清除掉就好啦!不過(guò)要是跟我一樣遇到 ASP.NET 怎樣也清除不掉 Cookie 的情況,那就真的是「鬼打牆」了,而且若要問(wèn)人家:「請問(wèn) Cookie 要怎麼樣才能刪除掉?」這種問(wèn)題問(wèn)別人真的會(huì )被笑,也不知道怎麼開(kāi)口。
因為我要共用 Cookie 在兩個(gè)網(wǎng)域,所以我的 Cookie Domain 是 .domain.com,所以照理說(shuō)清除 Cookie 的方法應該是:
 
Response.Cookies["Token"].Expires = DateTime.Now.AddYears(-1);
或者是
 
Response.Cookies["Token"].Expires = DateTime.Now.AddYears(-1);
Response.Cookies["Token"].Domain = ".domain.com";
或者是
 
Response.Cookies["Token"].HttpOnly = true;
Response.Cookies["Token"].Expires = DateTime.Now.AddYears(-1);
Response.Cookies["Token"].Domain = ".domain.com";
反正能試的都試了,而且以我對 HTTP 底層協(xié)定的了解,幾乎在 Web 領(lǐng)域沒(méi)有什麼問(wèn)題是無(wú)法解決的,但今天遇到 Cookie 清不掉這個(gè)問(wèn)題,真的讓我滿(mǎn)面愁容,程式越寫(xiě)越氣,用 Fiddler2 看 HTTP 封包看了幾十遍,就是看不出有任何問(wèn)題,但 Cookie 就是殺不掉。
但是這問(wèn)題非得要研究出來(lái)不可,就因為這個(gè)「無(wú)法登出」的「小問(wèn)題」搞了我快 5 個(gè)小時(shí)才弄清楚所有來(lái)龍去脈,所幸問(wèn)題有被我追根究柢的解決了,以下是要解決此問(wèn)題的完整解法:
若要清除跨 Domain 的 Cookie 必須清除兩次,例如說(shuō)使用者在 www1.domain.com 要執行登出動(dòng)作,必須要先將 Domain 為 www1.domain.com 的 Cookie 給清除掉,在接著(zhù)將 Domain 為 .domain.com 的這個(gè) Cookie 清除掉。
因為這兩個(gè) Cookie 為「同名」,全部都叫做 Token,所以無(wú)法在一個(gè) HTTP Request 中清除掉兩個(gè)同名的 Cookie,所以必須要在不同的兩個(gè) HTTP Request 中個(gè)別刪除不同 Domain 的 Cookie。
例如說(shuō):你必須先連到 Logout.aspx 頁(yè)面,在此頁(yè)面先將第一組 Cookie 清除:
 
HttpCookie cookie = new HttpCookie("Token", "");
cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddYears(-1);
cookie.Domain = Request.Url.Host;
Response.SetCookie(cookie);
Response.Redirect("Logout2.aspx", true);
然後再轉址到 Logout2.aspx 將 Parent Domain 的 Cookie 給清除掉:
 
HttpCookie cookie = new HttpCookie("Token", "");
cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddYears(-1);
cookie.Domain = ".domain.com";
Response.SetCookie(cookie);
Response.Redirect("index.aspx", true);
這樣就可以徹底將 Cookie 給清乾淨了,這真是難得的經(jīng)驗,從沒(méi)想到有這種解法,不知道網(wǎng)路上有沒(méi)有其他人遇過(guò)跟我同樣的問(wèn)題?
而我的登出程式最後是改成以下這段 Code,濃縮再一支程式裡:
 
protected void Page_Init(object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    HttpCookie cookie = new HttpCookie("Token", "");
    cookie.HttpOnly = true;
    cookie.Expires = DateTime.Now.AddYears(-1);
    if (Request.QueryString["domain"] == null)
    {
        cookie.Domain = Request.Url.Host;
        Response.SetCookie(cookie);
        Response.Redirect("Logout.aspx?domain=1", true);
    }
    else
    {
        cookie.Domain = ".domain.com";
        Response.SetCookie(cookie);
        Response.Redirect("index.aspx", true);
    }
 
本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/civilman/archive/2010/02/03/5286426.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
二級域名Cookies共享或跨域共享
關(guān)于asp.net c#中對cookie的操作
Cookie操作公共方法類(lèi)-程序開(kāi)發(fā)-紅黑聯(lián)盟
翻譯:Single Sign-On for Everyone - Anders Liu的.NET空間 - 博客園
curl 命令詳解
Single Sign On (SSO) for cross-domain ASP.NET applications: Part-I - The design blue print
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久