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. ...
随机推荐
- FOFA爬虫大法——API的简单利用
FOFA是一款网络空间搜索引擎,它通过进行网络空间测绘,帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析.应用分布统计.应用流行度等. 何为API?如果你在百度百科上搜索,你会得到如 ...
- 【JVM虚拟机】(7)---深入理解Class中-属性集合
#[JVM虚拟机](7)---深入理解Class中-属性集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机](6)- ...
- windows代码,路径分割
BOOL SplitPathName( PWSTR MyXbpathBuffer, wstring& wdrive, wstring& wdir, wstring& wfnam ...
- DevExpress控件安装破解和汉化使用教程
这段时间因公司业务需要.net开发且需要用到DevExpress控件,我自己研究学习了一下,用的是visual studio(2013)和DevExpress(V14.1.4),VS2013的下载安装 ...
- eureka服务搭建
Server端 引入eureka server的maven依赖 引入依赖时无需给定eureka的版本号,maven会根据当前使用的SpringCloud版本来判断应该引入哪个版本的euraka ser ...
- css控制UL LI 的样式详解(推荐)
代码如下: <div id="menu"> <ul> <li><a href="#">首页</a>& ...
- docker 发布到私有docker registry
1.使用vs发布项目到文件夹: 2.在文件夹中新建dockerfile文件, 内容: FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-sli ...
- 多标签分类的结果评估---macro-average和micro-average介绍
一,多分类的混淆矩阵 多分类混淆矩阵是二分类混淆矩阵的扩展 祭出代码,画线的那两行就是关键啦: 二,查看多分类的评估报告 祭出代码,使用了classicfication_report() 三,宏平均与 ...
- TTL 和 DNS TTL 的区别
TTL TTL是 Time To Live 的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量.TTL是IPv4包头的一个8 bit字段.在IPv4包头中TTL是一个8 bit字段,它位于 ...
- 实地探访:月薪 12K 的北京程序员是怎么工作生活的?
阅读本文大概需要 4 分钟. “ 每个人都有自己的亲身经历,每个人都有一条生活道路.千万人千万条,各不相同,各有特点.但是并不是好人都有一条好路,坏人都有一条坏路,有的时候却恰恰相反.这虽然不是历史的 ...