2012-04-18 34 views
2

私は新しいEU法のクッキー法を遵守しようとしており、ユーザーが同意する前にサイト上のすべてのクッキーを削除する必要があります。このプロセスは、ASP.NETによって作成されたASP.NET_SessionIDと呼ばれるクッキーとして依然として存在している実行したら、しかしクッキーが有効期限切れになる

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"; 
    } 
} 

:現在、私は成功し、次を使用しました。これを克服するために、私は基本的にURLにセッションIDを格納web.configファイルに次のように設定します。

<sessionState regenerateExpiredSessionId="true" cookieless="true" /> 

私はクッキーレス=「true」をjavasscriptコードが上記削除されません設定したときに私が持っている問題がありますもう私のクッキーのいずれか、そのような冗長になる。 cookieless = "false"に設定すると、javascriptは完全に機能します。一緒に働くために変更する必要がある他の設定はありますか?それならば

おかげ

+1

このクッキーは、セッションクッキー(現在のセッションでのみ有効)であるため、ブラウザまたはすべてのページを閉じると自動的に削除されます。だから心配しないでください。セッション状態のクッキーが期限切れになるまでの時間を設定することができます。 – Aristos

答えて

1

セッションを必要としない場合は、あなたがてsessionState(モード=「オフ」)を無効にすることができ

はまた、このようなI通常のクリーンアップクッキーのサーバー側は、(見たことがありません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); 
    } 
} 

希望します。

+0

完璧な、私が使用していた.netコードは動作していないようでしたが、あなたの何らかの理由でしました。おかげで – mjroodt

+0

私は助けることができてうれしい。 BTW:セキュリティ上の理由から、セッションCookieは多くの場合、クライアント側(java)スクリプトからのアクセスを禁止する「HttpOnly」です。それはおそらくあなたがjsを通してそれをきれいにすることができなかった理由です。 – jbl

関連する問題