HttpCookie类
转自:http://www.cnblogs.com/kissdodog/archive/2013/01/08/2851937.html
HttpCookie类专门由C#用于读取和写入Cookie的类。
Cookie的详细说明见:http://www.cnblogs.com/kissdodog/archive/2013/01/02/2842387.html
jQuery处理Cookie见:http://www.cnblogs.com/kissdodog/archive/2012/12/14/2818827.html
一、构造函数
HttpCookie(String) //创建并命名Cookie
HttpCookie(String,String) //创建命名Cookie并为其赋值
二、属性
Domain //获取或设置Cookie的作用域 接受或返回一个String值
Expires //获取或设置Cookie的有效时间 接受或返回一个DateTime值
HasKeys //获取一个值,通过该值指示Cookie是否含有子键,返回一个bool值
HttpOnly //获取或设置一个值,该值指定Cookie是否可以通过客户端脚本访问,接受或返回一个bool值
Name //获取或设置Cookie的名称,该值接受或返回一个String值
Path //获取或设置该Cookie作用路径,接受或返回一个String值
Secure //获取或设置Cookie是否安全传输(即仅通过Https传送),接受或返回一个bool值
Value //获取或设置单个Cookie的值,接受或返回一个String
Values //获取单个Cookie所包含的键值对的集合,返回一个
示例,C#写入一个Cookie,在前台通过jQuery读取。后端代码

public ActionResult Index()
{
HttpCookie hc = new HttpCookie("userName","admin");
hc.Path = "/";
hc.Expires = DateTime.Now.AddDays(7);
Response.SetCookie(hc);
return View();
} public ActionResult TestCookie()
{
return View();
}

前台页面代码Home/TestCookie.cshtml:

<script type="text/javascript" src="/jquery-1.8.2.min.js"></script>
<script src="/jscookie.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
if ($.cookie("userName")) {
alert($.cookie("userName"));
}
else {
alert("cookie没有写入");
}
})
</script>

先打开路径Home/Index,让Cookie写入,然后再打开Home/TestCookie,弹出admin。
再来一个HttpOnly的Demo,后台代码稍作修改如下:

public ActionResult Index()
{
HttpCookie hc = new HttpCookie("userName","张三");
hc.Path = "/";
hc.Expires = DateTime.Now.AddDays(7);
hc.HttpOnly = true;
Response.Cookies.Add(hc); HttpCookie hc1 = new HttpCookie("userName1", "李四");
hc1.Path = "/";
hc1.Expires = DateTime.Now.AddDays(7);
hc1.HttpOnly = false;
Response.Cookies.Add(hc1);
return View();
} public ActionResult TestCookie()
{
return View();
}

TestCookie视图代码如下:

<script type="text/javascript" src="/jquery-1.8.2.min.js"></script>
<script src="/jscookie.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
if ($.cookie("userName")) {
alert($.cookie("userName"));
}
else {
alert("userName读取不了");
} if ($.cookie("userName1")) {
alert($.cookie("userName1"));
}
else {
alert("userName1读取不了");
}
})
</script>

浏览器显示如下:



从google浏览器里面可以看到,其实两个值浏览器都是有的,但是通过js读取不了了。两者的差别在google浏览器里只是HTTP多了一 个勾。因此得出结论,当设置了HttpOnly为true之后,js就无法再读取cookie,但是跟浏览器的版本有关,较旧的浏览器并不支持该设置。
这个功能其实是非常有用的,可以帮助减轻脚本跨站点时所导致的 Cookie 被盗取的威胁。如果兼容的浏览器接收某个 Cookie,而该 Cookie 的 HttpOnlyCookies 已设置为 true,则客户端脚本无法访问该 Cookie。因此你懂的,如果你将账号密码等信息存入cookie里面的话,那么最好就加个HttpOnlyCookies。
再来一个Values与HasKeys的,只跟服务器后台有关,与视图无关,代码如下:

public ActionResult Index()
{
HttpCookie MyCookie = new HttpCookie("Cookie1");
MyCookie.Values["Val1"] = "第一个";
MyCookie.Values["Val2"] = "第二个";
MyCookie.Values["Val3"] = "第三个";
MyCookie.Path = "/";
Response.Cookies.Add(MyCookie);
return View();
} public ActionResult TestCookie()
{
HttpCookie MyCookie = System.Web.HttpContext.Current.Request.Cookies["Cookie1"];
string Cookies = "";
if (MyCookie.HasKeys)
{
NameValueCollection MyCookieValues = new NameValueCollection(MyCookie.Values);
String[] MyKeyNames = MyCookieValues.AllKeys;
int i = 0;
foreach (string KeyName in MyKeyNames)
{
Cookies += KeyName + ":";
Cookies += MyCookieValues.Get(i);
i++;
}
}
return Content(Cookies);
}

显示效果如下:

google浏览器里的cookie如下:

HttpCookie类的更多相关文章
- httpCookie与Cookie安全
Web 应用程序使用的 Cookie 个人认为这里设置的cookie与访问cookie的安全性关联大一点,配置节如下 <httpCookies domain="String" ...
- [深入浅出WP8.1(Runtime)]网络编程之HttpClient类
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- 笔记整理--Http-Cookie
如何设置一个永远无法删除的Cookie -- 系统架构 -- IT技术博客大学习 -- 共学习 共进步! - Google Chrome (2013/6/20 9:46:38) 如何设置一个永远无法删 ...
- HttpRequest 类
关于此类的介绍:查看HttpRequest类 点击查看:HttpRequest中方法的封装 跟这个类对应的HttpResponse类 定义:使 ASP.NET 能够读取客户端在 Web 请求期间发送的 ...
- 网络编程之HttpClient类(转)
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- HttpCookieCollection类
一.最近在研究HttpRequest类的时候,发现返回的cookie集合是存在放这个类的对象的.而实际上这个类只是一个HttpCookie对象的集合,关于HttpCookie类可以查看http://w ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- ASP.NET的六大内置对象
ASP.NET 六大内置对象(System.Web.UI.Page类): 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cooki R ...
- 细说Cookie
阅读目录 开始 Cookie 概述 Cookie的写.读过程 使用Cookie保存复杂对象 Js中读写Cookie Cookie在Session中的应用 Cookie在身份验证中的应用 Cookie的 ...
随机推荐
- 第九十二节,html5+css3移动手机端流体布局,开篇知识
html5+css3移动手机端流体布局,开篇知识 将项目设计成移动端可访问的页面,项目采用的是流体布局.也就是宽度以百分比自适应的,因为手机的屏幕大小不一致 一.整体设计 首先 我们要了解一 ...
- JS+CSS简单实现DIV遮罩层显示隐藏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- linshi_temp_erweima_html
<!doctype html><html><head><meta charset="utf-8"><meta content= ...
- json_encode转成带 花括号的{ } 和 中括号的[ ] 2种 形式 json数据
//提交多个出差人员 .命名为数组 name="apply_members[] " //php接收到数据 为 数组 $aa = array('0'=>11,'1'=> ...
- OMCS使用技巧 -- 摄像头及其动态能力
在开发类似视频聊天的应用时,我们经常需要获取摄像头的相关信息:而在进行视频聊天时,我们可能还希望有一些动态的能力.比如,在不中断视频聊天的情况下,切换一个摄像头.或者修改摄像头采集的分辨率或编码质量等 ...
- css3部分属性兼容性别扭写法(因为很多我就叫他别扭了,希望全面早早支持css3吧)
/*圆角class,需要设置圆角的元素加上class名称*/ .roundedCorners{ -webkit-border-radius: 10px;/*webkit内核浏览器*/ -moz-bor ...
- 模拟SPI协议时序
SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制. 在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE). 所以,在以 ...
- angularJS 系列(七)---指令
----------------------------------------------------------------------------------- 原文:https://www.s ...
- hibernate在配置文件中配置对象关系映射文件即hbm文件路径的写法
hbm文件如果在src下,则<mapping resource="*.hbm.xml"/> 如果在实体类包中,则<mapping resource="c ...
- JavaScript(3)—— 正则表达式
---恢复内容开始--- 正则表达式 这是写的正则表达式,正则表达式的点比较多,也比较细.所以有些地方我们得注意的比较多.正则表达式在JS中是很重要的一个部分,其中他的语法都得牢记.不过最好还是理解性 ...