gpt4 book ai didi

c# - 永久性 cookie 在 Internet Explorer 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 21:53:34 26 4
gpt4 key购买 nike

我在 Internet Explorer 中遇到持久性 cookie 的问题,即我可以设置 cookie,但无法使它们持久化。我使用的是 Internet Explorer 11,并尝试了“Internet 选项”->“高级”->“重置”,但没有帮助。

我写了这段测试代码:

class Program {
public static void Main(string[] args) {
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://+:7777/");
listener.Start();

ThreadPool.QueueUserWorkItem((o) = > {
while (listener.IsListening) {
ThreadPool.QueueUserWorkItem((c) = > {
HandleRequest(c as HttpListenerContext);
}, listener.GetContext());
}
});

Console.Write("Press any key to quit . . . ");
Console.ReadKey(true);
listener.Stop();
listener.Close();
}

static void HandleRequest(HttpListenerContext ctx) {
var cookie = ctx.Request.Cookies["TestCookie"];

if (cookie == null) {
Console.WriteLine("Setting cookie...");
var expiryDate = DateTime.UtcNow.AddDays(360);
ctx.Response.Headers["Set-Cookie"] = "TestCookie=some_value; Path=/; Expires=" + expiryDate.ToString("ddd, dd-MMM-yyyy H:mm:ss") + " GMT; HttpOnly";
} else {
Console.WriteLine("Cookie: " + cookie);
}
ReturnString(ctx, "OK");
}

protected static void ReturnString(HttpListenerContext ctx, String s) {
try {
byte[] buf = Encoding.UTF8.GetBytes(s);
ctx.Response.ContentLength64 = buf.Length;
ctx.Response.OutputStream.Write(buf, 0, buf.Length);
} catch (Exception e) {

} // suppress any exceptions
finally {
// always close the stream
ctx.Response.OutputStream.Close();
}
}
}

现在,当访问 127.0.0.1:7777 时,我首先收到“Setting cookie”,然后在所有后续请求中收到“Cookie: TestCookie=some_value”。在 Chrome 中,cookie 是持久的(我可以关闭浏览器,重新启动它,仍然得到“Cookie: TestCookie=some_value”),但这在 Internet Explorer 中不起作用。也就是说,在使用 IE 时,每次重新启动浏览器时,我都会在第一个请求中获得“设置 cookie”。所以 cookie 显然已经不存在了。

这是为什么?难道我做错了什么?肯定有一些方法可以使用 C# 服务器在 IE 中设置持久性 cookie 吗?

最佳答案

嗯,我找到了答案。这非常简单,真的。在设置到期日期时,我使用了代码

expiryDate.ToString("ddd, dd-MMM-yyyy H:mm:ss")

当然,这会创建日期的本地化表示。因为我在挪威,所以“ddd”用挪威语创建了星期几。当然,IE 无法解析它。

这个简单的改变解决了问题:

expiryDate.ToString("ddd, dd-MMM-yyyy H:mm:ss", System.Globalization.CultureInfo.InvariantCulture)

很抱歉给您带来的麻烦,伙计们..

关于c# - 永久性 cookie 在 Internet Explorer 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32180053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com