js无法获取.net设置的cookie
使用CookieHelper帮助类:
public class CookieHelper
{ #region 获取Cookie /// <summary>
/// 获得Cookie的值
/// </summary>
/// <param name="cookieName"></param>
/// <returns></returns>
public static string GetCookieValue(string cookieName)
{
HttpRequest request = HttpContext.Current.Request;
if (request != null)
return GetCookieValue(request.Cookies[cookieName]);
return "";
} /// <summary>
/// 获得Cookie的值
/// </summary>
/// <param name="cookie"></param>
/// <returns></returns>
public static string GetCookieValue(HttpCookie cookie)
{
if (cookie != null)
{
return cookie.Value;
}
return "";
} /// <summary>
/// 获得Cookie
/// </summary>
/// <param name="cookieName"></param>
/// <returns></returns>
public static HttpCookie GetCookie(string cookieName)
{
HttpRequest request = HttpContext.Current.Request;
if (request != null)
return request.Cookies[cookieName];
return null;
} #endregion #region 删除Cookie /// <summary>
/// 删除Cookie
/// </summary>
/// <param name="cookieName"></param>
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 /// <summary>
/// 设置Cookie
/// </summary>
/// <param name="cookieName"></param>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="expires"></param>
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 /// <summary>
/// 添加为Cookie.Values集合
/// </summary>
/// <param name="cookieName"></param>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="expires"></param>
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);
} /// <summary>
/// 添加Cookie
/// </summary>
/// <param name="cookie"></param>
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 "";
}
}
set
{
var cookie = CookieHelper.GetCookie("VCLoginName");
if (cookie != null)
{
CookieHelper.SetCookie("VCLoginName", value, DateTime.Now.AddHours());
}
else
{
//有效期,一个钟头
CookieHelper.AddCookie("VCLoginName", value, DateTime.Now.AddHours());
} }
}
设置:
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(, , , ); //天,小时,分钟,秒 ,cookie有效作用时间
cookie.Expires = dt.Add(ts); //添加作用时间
context.Response.AppendCookie(cookie); //确定写入cookie中
解决:
因为CookieHelper中设置了cookie的HttpOnly为true。
ASP.Net中HttpCookie对象的HttpOnly 属性 指定一个Cookie 是否可通过客户端脚本访问。不能通过客户端脚本访问为 true;否则为 false。默认值为 false。此属性并不能完全阻止客户端在本地获取cookies,但是可以增加通过脚本直接获取的难度。
js无法获取.net设置的cookie的更多相关文章
- js | javascript获取和设置元素的属性
获取和设置元素的内容: var nv = document.getElementById("pid"); alert(nv.innerHTML); nv.innerHTML=&qu ...
- js操作获取和设置cookie
//创建cookie function setCookie(name, value, expires, path, domain, secure) { var cookieText = encodeU ...
- js / jquery 获取和设置 FCK Editor 的值
开发中遇到 通过 $("#content").val(); 或者 document.getElementById("content"); 并不能获取到 id 为 ...
- js 动态获取高度 设置距离
var boxs = document.getElementById('m2-head');var Height = boxs.clientHeight||o.offsetHeight;console ...
- php 设置中文 cookie, js获取
参考链接:http://www.nowamagic.net/librarys/veda/detail/1271 http://www.ruanyifeng.com/blog/2008/06/base6 ...
- Js添加、读取、删除cookie,判断cookie是否有效,指定domain域下主路径path下设置cookie,设置expires过期时间
有时我们需要用cookie保存用户名,记录登录状态,如何正确判断该机用户cookie是否存在呢?不能简单使用a!=”这样的写法. 正确方法是:判断是否存在名为username3的cookie,使用do ...
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
js_html_input中autocomplete="off"在chrom中失效的解决办法 分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocompl ...
- js/java 获取、添加、修改、删除cookie(最全)
一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务 ...
- 怎样指定当前cookie不能通过js脚本获取
所谓" 不能通过js脚本获取 " 主要指的是: 使用document.cookie / XMLHttpRequest对象 / Request API 等无法获取到当前cookie. ...
随机推荐
- im2col:将卷积运算转为矩阵相乘
目录 im2col实现 优缺点分析 参考 博客:blog.shinelee.me | 博客园 | CSDN im2col实现 如何将卷积运算转为矩阵相乘?直接看下面这张图,以下图片来自论文High P ...
- 广州站长沙龙 MIP 问题及答案
1. mip提交几个月时间了,生效量比较少,是什么原因? 答:提交 MIP 页面后,经过收录.校验.和生效三个步骤,才能在结果页看到闪电标. 1)提交 URL 后,spider 会去抓取收录: 2)页 ...
- Java连接redis
一.依赖包 jedis-2.1.0.jar commons-pool-1.6.jar 二.实例 //连接参数public class RedisConfig { public static int ...
- ASP.NET Core开发者成长路线图
目录 ASP.NET Core开发者路线图RoadMap 免责声明 请给一个星星! ⭐ 路线图 资源 总结 贡献 许可协议 ASP.NET Core开发者路线图RoadMap 来源: MoienTaj ...
- 『开源』扩展 JS 的 Date 处理函数
背景: JS 有自己的 时间类型 Date —— 但是,在某些情况下 这个对象似乎 不太好用. 本文 基于 JQuery 扩展了一些 JS日期函数,包括: > 字符串 转 Date 对象 万 ...
- 如何给列表降维?sum()函数的妙用
上个月,学习群里的 S 同学问了个题目,大意可理解为列表降维 ,例子如下: oldlist = [[1, 2, 3], [4, 5]] # 想得到结果:newlist = [1, 2, 3, 4, 5 ...
- Android开发利器之stetho
文章同步自javaexception Stetho是什么? github上地址https://github.com/facebook/stetho stetho是facebook出品的一款开发调试工具 ...
- Python之路【第六篇】:Python迭代器、生成器、面向过程编程
阅读目录 一.迭代器 1.迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 代码如下: while True: ...
- 一、redis简单配置
1.安装 下载安装后解压即可执行make命令完成编译,完整命令如下: wget http://download.redis.io/redis-stable.tar.gz tar xzf redis-s ...
- Ginger的第一篇博客
怀着无感的心情,没有技术的身体,写下第一篇博客作为标记. 目前应该会搞清楚数据结构上相关的操作.算法,然后用c语言实现后记录在博客. 我是有目标的咸鱼! 2019/4/19