6

ユーザーがブラウザを閉じたときにCookieを非表示にしたいのですが、いくつかの有望なプロパティをすでに設定していますが、ブラウザ全体を閉じた後でもCookieが元に戻ります。

HttpCookie cookie = new HttpCookie("mycookie", "abc");
cookie.HttpOnly = true; //Seems to only affect script access
cookie.Secure = true; //Seems to affect only https transport

メモリ内のCookieを実現するために、どのプロパティまたはメソッド呼び出しが欠落していますか?

4

6 に答える 6

7
cookie.Expires = DateTime.MinValue;

このCookieは、ブラウザが閉じられるとすぐに期限切れになります。

于 2010-12-21T15:20:28.970 に答える
7

有効期限が明示的に設定されていないCookieは、ブラウジングセッションが終了すると自動的に消えます。

さて、「ブラウジングセッション」とは、ブラウザごとに異なることを意味します。一部のブラウザでは、ブラウザのすべてのインスタンスが閉じていることを意味します。一部の人にとっては、関連するタブまたは元のブラウザが閉じていることを意味します。

テストでは、Cookieを探すために再度開く前に、ブラウザのすべてのインスタンスを閉じていることを確認してください。それでも問題が解決しない場合は、ブラウザ名とリビジョンを投稿してください。

于 2010-12-21T15:28:59.610 に答える
4

Cookie.Expiresプロパティを設定しない場合、Cookieはブラウザセッションの終了時に期限切れになるように設定されます。

于 2010-12-21T15:34:11.137 に答える
2

ここから取得した場合、Cookieはブラウザを閉じても破棄されません

 HttpCookie cookie = new HttpCookie(name);
 cookie.Value = value;
 cookie.Expires = Convert.ToDateTime(“12/12/2008″);  //*difference is here*//
 Response.Cookies.Add(cookie);}

ブラウザを閉じるとCookieが失われます

     HttpCookie cookie = new HttpCookie(name);
     cookie.Value = value;
     Response.Cookies.Add(cookie);}
于 2014-09-13T08:57:52.817 に答える
1

ASP.NETSession変数を見てください。これはブラウザによっては持続し、「Cookieなし」またはハードタイムアウトに設定できます。

http://msdn.microsoft.com/en-us/library/h6bb9cz9%28VS.71%29.aspx

于 2010-12-21T15:18:10.243 に答える
1

ブラウザを開いた状態で非永続的なCookieのタイムアウトを処理する最良の方法は、タイムアウトのキー値を追加することです。以下のコードは、ログインユーザーIDキー値と、ブラウザーの互換性のための暗号化(含まれていません)のセキュリティに使用されます。フォーム認証は使用しません。

HttpCookie cookie = new HttpCookie(name);
cookie.Values["key1"] = value;
cookie.Values["key2"] = DateTime.Now.AddMinutes(70).ToString(); 
                             //timeout 70 minutes with browser open
cookie.Expires = DateTime.MinValue;
cookie.Domain = ConfigurationManager.AppSettings["website_domain"];
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

Cookieキー値を確認するときは、次を使用します。

try
{

DateTime dateExpireDateTime;
dateExpireDateTime = DateTime.Parse(HttpContext.Current.Request.Cookies[name]["key2"]);

if (DateTime.Now > dateExpireDateTime)
{
//cookie key value timeout code
}
else
{
//reset cookie
}

catch
{
//clear cookie and redirect to log in page
}

フォーム認証とGoogleChromeを使用して互換性の問題を見つけました。

于 2014-04-15T13:56:12.003 に答える