我正在使用以下代码专门设置cookie:
System.Web.HttpCookie cookie = new System.Web.HttpCookie("MyCookie", accessToken)
{
Expires = DateTime.UtcNow.AddDays(30),
HttpOnly = false,
Domain = ".mywebsite.com",
Path = "/"
};
我的web.config上还有以下条目:
<httpCookies httpOnlyCookies="true" requireSSL="true" lockItem="true"/>
直到今天发生的事情是,所有Cookie都设置为HttpOnly
,但MyCookie
除外,这是我想要的。
但是今天发生了一些奇怪的事情。我使用相同的代码部署了我的Web应用程序,MyCookie
被设置为HttpOnly
。
所以我现在有两种不同的安装方式。
所以我的问题是:是否有任何其他配置或OS / IIS版本覆盖了cookie创建方法设置?
由于
答案 0 :(得分:0)
HttpOnly依赖于浏览器,但大多数常见浏览器都可以使用。对于.NET世界,可以像上面针对cookie一样设置它。但是,如果您使用的是.NET Core,则除非您使用的是IIS,否则web.config中不再提及下面提到的默认值,因此您必须在每个cookie上进行设置。
考虑到以下内容与您的代码中的内容一致,我会仔细检查您设置后没有其他任何内容正在修改您的Cookie。您是否通过在上面的cookie定义之后添加调试代码来检查HttpOnly的值是否为真?我还会尝试在新变量中检索cookie,以确保它也是一样的。
默认情况下,.NET 2.0为其设置HttpOnly属性 - 会话ID - 表单身份验证cookie
在.NET 2.0中,也可以通过HttpCookie对象为所有自定义应用程序cookie设置HttpOnly
通过system.web / httpCookies元素中的web.config
<httpCookies httpOnlyCookies="true" …>
或以编程方式
C#代码:
HttpCookie myCookie = new HttpCookie("myCookie");
myCookie.HttpOnly = true;
Response.AppendCookie(myCookie);
VB.NET代码:
Dim myCookie As HttpCookie = new HttpCookie("myCookie")
myCookie.HttpOnly = True
Response.AppendCookie(myCookie)
但是,在.NET 1.1中,您必须手动执行此操作,例如,
Response.Cookies[cookie].Path += ";HttpOnly";