当我向HttpResponse添加cookie时,如何删除'no-cache =“Set-Cookie”'?

时间:2012-12-22 18:11:40

标签: asp.net .net wcf cookies

我目前正在从Web服务返回一个cookie,代码如下:

HttpResponse response = ...;
var cookie = new HttpCookie(cookieName)
{
    Value = cookieValue,
    Expires = expiresDate,
    HttpOnly = true,
    Path = "/",
    Secure = true,
};
response.Cookies.Add(cookie);

这导致在我的Cache-Control标头中自动添加 no-cache 指令:

  

缓存控制:public, no-cache =“Set-Cookie”,必须重新验证,max-age = 60

我的客户端碰巧直接处理这个指令而根本没有缓存响应。如果我在点击客户端之前手动删除 no-cache 指令,则缓存效果很好。

如何阻止.NET自动将此指令添加到包含Cookie的响应中?

1 个答案:

答案 0 :(得分:6)

HttpResponse根据Cookies集合是否为非空来确定是否应添加此指令。因此,如果手动添加标头,则可以隐藏其在.NET中的存在:

response.AddHeader("Set-Cookie", String.Format(
        "{0}={1}; expires={2}; path=/; secure; HttpOnly",
        cookieName, cookieValue, expiresDate.ToString("R")));