持久性cookie无法在Internet Explorer中运行

时间:2015-08-24 10:28:53

标签: c# internet-explorer cookies

我在Internet Explorer中遇到持久性cookie的问题,也就是说,我可以设置cookie,但不能使它们持久存在。我使用的是Internet Explorer 11,并尝试过“Internet选项”#34; - > "高级" - > "重置",但它没有帮助。

我已经写了这个测试代码:

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时,我首先得到"设置cookie",然后" Cookie:TestCookie = some_value"在所有后续请求。在Chrome中,cookie是持久的(我可以关闭浏览器,重新启动它,然后仍然得到" Cookie:TestCookie = some_value"),但这在Internet Explorer中不起作用。也就是说,当使用IE时,我得到了"设置cookie"每次重新启动浏览器时第一次请求。所以cookie显然不再存在了。

这是为什么?难道我做错了什么?当然必须有一些方法在使用C#服务器在IE中设置持久性cookie?

1 个答案:

答案 0 :(得分:0)

您可以将您的网站添加到IE Properties中的受信任区域吗?这听起来可能与安全设置有关。