Make ASP.NET_SessionId cookie not httpOnly

本文关键字:cookie not httpOnly SessionId ASP NET Make | 更新日期: 2023-09-27 18:34:17

用于

ASP.NET MVC 中会话的 cookie httpOnly(属性设置为 true(。

有没有办法让它不是httpOnly?

我希望能够从javascript访问这个cookie。

即使它不如"如果所有宇宙都反对我怎么办?!"默认设置安全。

Make ASP.NET_SessionId cookie not httpOnly

如果你真的需要它,你可以尝试把它添加到你的Global.asax中:

void Application_EndRequest(Object sender, EventArgs e)
{
   if (Response.Cookies.Count > 0)
   {
       foreach (string s in Response.Cookies.AllKeys)
       {
           if (s == "ASP.NET_SessionId")
           {
               Response.Cookies["ASP.NET_SessionId"].HttpOnly = false;
           }
       }
   }    
}

解决方案是从这里开始的。

我构建了一个系统,该系统使用 cookie 在整个站点中存储搜索参数。主页上有链接,我想使用 jQuery 保存一个带有项目 ID 的 cookie。

但是,单击后,用户将被发送到高级搜索页,他们可以在其中使用 .net 控件修改搜索。cookie 会再次保存,但当用户浏览回去时,它们需要由主页上的 js 写入。

所以我像这样设置 HttpOnly:

var cookie = new HttpCookie(name)
{
   Value = val,
   HttpOnly = false // #DEV search cookies can be modified by JS
};
HttpContext.Current.Response.Cookies.Add(cookie);