若要清除跨 Domain 的 Cookie 必須清除兩次,例如說使用者在 www1.domain.com 要執行登出動作,必須要先將 Domain 為 www1.domain.com 的 Cookie 給清除掉,在接著將 Domain 為 .domain.com 的這個 Cookie 清除掉。
因為這兩個 Cookie 為「同名」,全部都叫做 account,所以無法在一個 HTTP Request 中清除掉兩個同名的 Cookie,所以必須要在不同的兩個 HTTP Request 中個別刪除不同 Domain 的 Cookie。
示例代码:
- //
- // Cross-Domain Cookie Clear
- //
- // author:
- // newmin (www.ops.cc)
- //
- HttpContext context = HttpContext.Current;
- HttpCookie c = context.Request.Cookies["account"];
- c.Expires = DateTime.Now.AddDays(-1);
- //先清除.domain.com的Cookie
- if (String.IsNullOrEmpty(context.Request["domain"]))
- {
- c.Domain = ".domain.com";
- context.Response.SetCookie(c);
- context.Response.Redirect("?domain=mine", true);
- }
- else
- {
- context.Response.SetCookie(c);
- }
转载于:https://blog.51cto.com/atweb/545430