私は、クッキーの法律に関する新しいEU法を遵守しようとしており、ユーザーが同意する前に、私のサイトのすべてのクッキーを削除する必要があります。現在、私は次のものをうまく使いました。
function deleteAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
しかし、このプロセスが実行されると、まだありますASP.NETによって作成されたASP.NET_SessionIDというCookie。これを克服するために、基本的にURLにsessionIDを格納するweb.configファイルに以下を設定します。
<sessionState regenerateExpiredSessionId="true" cookieless="true" />
私が持っている問題は私が設定したときですcookieless = "true"上記のjavasscriptコードでは、Cookieを削除する必要がなくなり、不要になります。cookieless = "false"に設定すると、JavaScriptは完全に機能します。両方一緒に働く?
ありがとう
回答:
回答№1は1セッションが必要ない場合は、sessionstateを無効にすることができます(mode = "Off")。
また、私は通常このようにクッキーをサーバーサイドでクリーンアップします(ただし、asp.net sessionidを削除しても見られません)
protected void Page_Load(object sender, EventArgs e)
{
Response.BufferOutput = true;
Session.Abandon();
HttpCookieCollection cookies = Request.Cookies;
var cookiesList = new List<String>();
foreach (String cookieKey in cookies)
cookiesList.Add(cookieKey);
foreach (var cookieKey in cookiesList)
{
var cookie = new HttpCookie(cookieKey);
cookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(cookie);
}
}
これが役立つことを願っています。