さて、これが 411 です。Global.asax.cs ファイルに次のイベント ハンドラーがあります。
private void Global_PostRequestHandlerExecute(object sender, EventArgs e)
{
if (/* logic that determines that this is an ajax call */)
{
// we want to set a cookie
Response.Cookies.Add(new HttpCookie("MyCookie", "true"));
}
}
そのハンドラーは、Ajax リクエスト中に (私が使用している Ajax フレームワークの結果として) 実行されるだけでなく、他の場合にも実行されます。ここでは、簡潔にするために含めませんでした)。
これは問題なく動作するということだけで十分です。Cookie が設定され、クライアントでそれを読み取ることができ、その時点まではすべて問題ありません。
さて、私を夢中にさせる部分です。
Cookieを削除するために使用しているJavaScript関数は次のとおりです。
function deleteCookie(name) {
var cookieDate = new Date();
cookieDate.setTime(cookieDate.getTime() - 1);
document.cookie = (name + "=; expires=" + cookieDate.toGMTString());
}
したがって、もちろん、Cookie が設定された後のある時点で、次のように削除します。
deleteCookie("MyCookie");
ただ、それだけではうまくいきません。Cookie はまだ存在します。それで、誰かが理由を知っていますか?