博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js无法获取.net设置的cookie
阅读量:4684 次
发布时间:2019-06-09

本文共 5720 字,大约阅读时间需要 19 分钟。

使用CookieHelper帮助类:

public class CookieHelper    {        #region 获取Cookie        ///          /// 获得Cookie的值         ///          ///          /// 
public static string GetCookieValue(string cookieName) { HttpRequest request = HttpContext.Current.Request; if (request != null) return GetCookieValue(request.Cookies[cookieName]); return ""; } /// /// 获得Cookie的值 /// /// ///
public static string GetCookieValue(HttpCookie cookie) { if (cookie != null) { return cookie.Value; } return ""; } /// /// 获得Cookie /// /// ///
public static HttpCookie GetCookie(string cookieName) { HttpRequest request = HttpContext.Current.Request; if (request != null) return request.Cookies[cookieName]; return null; } #endregion #region 删除Cookie /// /// 删除Cookie /// /// public static void RemoveCookie(string cookieName) { HttpResponse response = HttpContext.Current.Response; if (response != null) { HttpCookie cookie = response.Cookies[cookieName]; if (cookie != null) { response.Cookies.Remove(cookieName); } } } #endregion #region 设置/修改Cookie /// /// 设置Cookie /// /// /// /// /// public static void SetCookie(string cookieName,string value, DateTime? expires) { Guard.IsNotNullOrEmpty(cookieName, "cookieName"); HttpResponse response = HttpContext.Current.Response; if (response != null) { HttpCookie cookie = response.Cookies[cookieName]; if (cookie != null) { cookie.Value = value; if (expires != null) cookie.Expires = expires.Value; response.SetCookie(cookie); } } } #endregion #region 添加Cookie /// /// 添加为Cookie.Values集合 /// /// /// /// /// public static void AddCookie(string cookieName, string value, DateTime expires) { Guard.IsNotNullOrEmpty(cookieName, "cookieName"); HttpCookie cookie = new HttpCookie(cookieName); cookie.Expires = expires; cookie.Value = value; AddCookie(cookie); } /// /// 添加Cookie /// /// public static void AddCookie(HttpCookie cookie) { HttpResponse response = HttpContext.Current.Response; if (response != null) { //指定客户端脚本是否可以访问[默认为false] cookie.HttpOnly = true; //指定统一的Path,比便能通存通取 cookie.Path = "/"; //设置跨域,这样在其它二级域名下就都可以访问到了 //cookie.Domain = "nas.com"; response.AppendCookie(cookie); } } #endregion }

设置cookie:

public static string VCLoginName        {            get            {                try                {                    return CookieHelper.GetCookieValue("VCLoginName").ToStr();                }                catch                {                    return "0";                }            }            set            {                var cookie = CookieHelper.GetCookie("VCLoginName");                if (cookie != null)                {                    CookieHelper.SetCookie("VCLoginName", value, DateTime.Now.AddHours(1));                }                else                {                    //有效期,一个钟头                    CookieHelper.AddCookie("VCLoginName", value, DateTime.Now.AddHours(1));                }            }        }

设置:

SysContext.VCLoginName = user.LoginName;

js获取和设置cookie:

function getCookie(cname) {            console.log("开始")            console.log(document.cookie)            console.log("结束")            var arrStr = document.cookie.split("; ");                       for (var i = 0; i < arrStr.length; i++) {                var temp = arrStr[i].split("=");                if (temp[0] == cname) return unescape(temp[1]);            }        } //添加cookie        function addCookie(cname, cvalue, ctime) {            var str = cname + "=" + escape(cvalue);            if (ctime > 0) {                               //为时不设定过期时间,浏览器关闭时cookie自动消失                var date = new Date();                var ms = ctime * 3600 * 1000;                date.setTime(date.getTime() + ms);                str += "; expires=" + date.toGMTString();                alert(cname + cvalue);            }            document.cookie = str;        }

遇到的问题:

后台设置cookie但是通过js无法获取相应的cookie的值,why?

不知道。但是自己在一般处理程序中写的cookie却可以通过js获得。why?

HttpCookie cookie = new HttpCookie("LoginName", HttpUtility.UrlEncode(username)); //定义cookie对象以及名为DocUrl的项         DateTime dt = DateTime.Now;                  //定义时间对象         TimeSpan ts = new TimeSpan(0, 12, 20, 0);         //天,小时,分钟,秒  ,cookie有效作用时间        cookie.Expires = dt.Add(ts);                 //添加作用时间         context.Response.AppendCookie(cookie);               //确定写入cookie中

解决:

因为CookieHelper中设置了cookie的HttpOnly为true。

中HttpCookie对象的HttpOnly 属性 指定一个Cookie 是否可通过客户端脚本访问。不能通过客户端脚本访问为 true;否则为 false。默认值为 false。此属性并不能完全阻止客户端在本地获取cookies,但是可以增加通过脚本直接获取的难度。

转载于:https://www.cnblogs.com/huangshuqiang/p/10252782.html

你可能感兴趣的文章
ASP.Net 验证视图状态 MAC 失败
查看>>
jQuery 在iframe中操作父页面某元素的方法
查看>>
微信小程序
查看>>
[题目] Luogu P3716 [CTSC2000]冰原探险
查看>>
linux下用phpize给PHP动态添加扩展
查看>>
php session 严格过期时间实现
查看>>
基于源码学习-fighting
查看>>
[转]LINUX新建和增加SWAP分区
查看>>
(上线时清缓存)laravel 5.1 的程序性能优化(配置文件) - 简书
查看>>
SettingsSVNPlugin
查看>>
华为经典问题汇总~
查看>>
linux桌面环境gnome,kde,xfce,lxde 使用比较(转)
查看>>
如何做自己不想做的事情,却必须要去做的事情
查看>>
JavaScript的深入理解(1)
查看>>
Go-TCP粘包
查看>>
KNN算法的感受 1
查看>>
用Maven构建Mahout项目实现协同过滤userCF--单机版
查看>>
Java多线程-线程的调度(守护线程)
查看>>
Bootstrap 简介(Web前端CSS框架)
查看>>
Bootstrap 概览
查看>>