1

ユーザーがログアウトするときに、C# を使用して Cookie を削除しようとしています。ここにリストされているコードの提案:ブラウザーから Cookie を削除しても機能しません。私は必死になってそれらのいくつかをまとめましたが、それらは機能していません。

if (Request.Cookies["loginidcookie"] != null)
{
    HttpCookie myCookie = new HttpCookie("loginidcookie");
    myCookie.Value = String.Empty;
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
    Response.Cookies.Remove("loginidcookie");
}
Response.Redirect("logout.aspx");

そのため、Cookie の値を空の文字列で上書きするだけでなく、昨日期限切れになるように設定し、Cookie のリストから削除しています。しかし、このコードを実行して [戻る] ボタンを押してリロードすると、Cookie は元の値のままです。では、どうすればそれを取り除くことができますか?

ありがとうございました

4

4 に答える 4

5

代わりにこれを試してください:

string cookieName = "loginidcookie";
if (Request.Cookies[cookieName ] != null)
{
    var myCookie = new HttpCookie(cookieName);
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}
Response.Redirect("logout.aspx", false);

注(ここから):

ユーザーのコンピューター上の Cookie を直接削除することはできません。ただし、Cookie の有効期限を過去の日付に設定することで、ユーザーのブラウザに Cookie を削除するように指示できます。ユーザーが次回、Cookie を設定したドメインまたはパス内のページにリクエストを行うと、ブラウザーは Cookie の有効期限が切れていると判断し、Cookie を削除します。

于 2012-09-04T16:38:52.967 に答える
3

Cookie を追加してから、応答が送信される前にコレクションから削除しているため、事実上何もしていません。

HttpCookie myCookie = new HttpCookie("loginidcookie");
... and then below
Response.Cookies.Add(myCookie);
Response.Cookies.Remove("loginidcookie");

昨日期限切れになるように Cookie を変更する場合leaveは、Cookie が過去の有効期限で更新されたことをブラウザが認識したときに削除するように、コレクション内の Cookie を変更する必要があります。つまり、電話しないでくださいResponse.Cookies.Remove("loginidcookie");

于 2012-09-04T16:37:41.997 に答える
0

RedFilter のソリューションを試してみてください。 ただし、Response.Redirect() の代わりに Server.Transfer() または Server.TransferRequest() を使用すると、バグの可能性があるため、これらの Cookie 応答が常に発生するとは限りません。

于 2014-06-19T20:42:14.620 に答える
-1

ブラウザを閉じた後、Cookie を確認していますか? または、同じブラウザでページをリロードしますか?

同じブラウザでページを開くと、有効期限が切れた Cookie が表示されますが、新しいブラウザを開いて再度ページにアクセスしようとすると、Cookie は取得されません。

于 2014-08-15T21:17:42.020 に答える