5

我目前正在使用以下代码从 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指令:

Cache-Control: public, no-cache="Set-Cookie" , must-revalidate, max-age=60

我的客户恰好通过直接不缓存响应来处理此指令。如果我在no-cache指令到达客户端之前手动删除它,那么缓存效果很好。

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

4

1 回答 1

7

HttpResponseCookies根据集合是否为非空来决定是否添加该指令。因此,如果您手动添加标头,您可以在 .NET 中隐藏它的存在:

response.AddHeader("Set-Cookie", String.Format(
        "{0}={1}; expires={2}; path=/; secure; HttpOnly",
        cookieName, cookieValue, expiresDate.ToString("R")));
于 2012-12-22T18:11:40.133 回答