我设置cookie作为我的MVC应用程序的一部分:ASP MVC 3饼干失去的HttpOnly和安全标志
var cookie = new HttpCookie(CookieName, encryptedData)
{
Path = FormsAuthentication.FormsCookiePath,
Domain = CookieDomain,
Expires = authenticationTicket.Expiration,
HttpOnly = true,
Secure = IsSecure // true
};
response.Cookies.Add(cookie);
现在,如果我调试我看到它的所有工作正常,没有问题,其增加和多数民众赞成罚款太。但是,由于某种原因,当它实际上到达浏览器时,没有设置HttpOnly标志或安全标志。所以,我是一个有点困惑...
我已经试过的System.Web中下cookie的web.config中的条目设置的HttpOnly和安全标志:
<httpCookies httpOnlyCookies="true" requireSSL="true" />
现在这里是响应的外观时,浏览器收到它:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Max-Age: 10000
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type, x-requested-with, *
Access-Control-Allow-Origin: http://localhost:34567
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
Set-Cookie: myCookie=53BA8AF84835A81E014B9174329D8543FBB6029B71C463C6FC1305D9F966F28EAA058FE103325C0F10A3012480FB0EF3F6C0BAC4703A6A6B725F383ADA35A5C125A0438FC42CADCB0DAB77953C967E6660E51C4113C6545220A0C2F86230F446D159D523BBE9CA4D9419A67BC44D23B9C4D0974DF2ED66C47EA7308D8E42E1C2280EA6059A23303E3BCBDF28F6BD4A3DFA92FFAB33DDAC8EC05D99310D26FBD6310252156CD28B89386B0D483D6D2E295EF33487E64468655371CC446E0B5DDBF12B3AA8218AF1FA929A98638A1AC729BA60815B86EAD9624ED1787172B585BE4E457C3568AB6EAAF4865E8468D04336FA7340AAC1BA75162FB322D436DC9BF50466F2F0FB3464ECF41C6C1F7001639DFE2AB2AD9CBFB65A292FE5FA42783DF331AA4641432647BA9672FE6D4C15F830E4DF8B38605852BCB15E5B01B862D966E2FD1D620730312982DB8AB4CE5EE0D0E40E6C3F5234DE5EBFA594036D912F07C3798ED429A2552AD6C4B9EC10B90749850CBDEC97F0BF7E2E43CB3991608C5D533B6EA9F8D0A7AD949B42CD3BAA13DEE99C330121B3D868B412A3435FA01C7F223641CFE441A2E07F5DFB8B23F053CBA13F5E1262A07FBFD4EC4BADF9BD5898; expires=Wed, 27-Feb-2013 19:15:24 GMT; path=/
Date: Wed, 27 Feb 2013 18:45:24 GMT
Content-Length: 2
所以我错过了什么在这里?还是有什么我不是设置在我应该的地方?我也使用CORS,因为这个cookie是从web服务器发出的认证机制。 SSL已启用,并且也正在通过https使用呼叫。即使我关闭了安全cookie并使用http,HTTPOnly标志也没有被设置,所以我很困惑。
===更新===
已经双重检查看来我误导大家,仅Http响应从服务器发送正确的倒在你收到的cookie第一次不过!当ajax调用然后将cookie发送到服务器时,它似乎不会添加httponly标志,这意味着被抛出的cookie不再安全。 cookie的安全部分不会在第一个响应中发送,但至少会为此添加更多的上下文。
由于将搏一搏,这不会只会影响HttpOnly?还是需要在表单上设置呢?我觉得这很奇怪,如果这样做是为了手动设置每个cookie,所以我不知道为什么它不会接受输入的细节。 – Grofit 2013-02-27 19:26:15
窗体位不会工作,只是告诉我web.config无效,但文档不会在MSDN上加载,所以不能完全确定是否有一些必需的子元素。 – Grofit 2013-02-27 19:55:07
虽然这不是我的问题的答案,但我相信大多数来这里的人都需要上面列出的解决方案,因此将标记为答案。 – Grofit 2013-02-28 14:05:31