转自: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类的更多相关文章

  1. httpCookie与Cookie安全

    Web 应用程序使用的 Cookie 个人认为这里设置的cookie与访问cookie的安全性关联大一点,配置节如下 <httpCookies domain="String" ...

  2. [深入浅出WP8.1(Runtime)]网络编程之HttpClient类

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  3. 笔记整理--Http-Cookie

    如何设置一个永远无法删除的Cookie -- 系统架构 -- IT技术博客大学习 -- 共学习 共进步! - Google Chrome (2013/6/20 9:46:38) 如何设置一个永远无法删 ...

  4. HttpRequest 类

    关于此类的介绍:查看HttpRequest类 点击查看:HttpRequest中方法的封装 跟这个类对应的HttpResponse类 定义:使 ASP.NET 能够读取客户端在 Web 请求期间发送的 ...

  5. 网络编程之HttpClient类(转)

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  6. HttpCookieCollection类

    一.最近在研究HttpRequest类的时候,发现返回的cookie集合是存在放这个类的对象的.而实际上这个类只是一个HttpCookie对象的集合,关于HttpCookie类可以查看http://w ...

  7. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  8. ASP.NET的六大内置对象

    ASP.NET 六大内置对象(System.Web.UI.Page类): 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cooki R ...

  9. 细说Cookie

    阅读目录 开始 Cookie 概述 Cookie的写.读过程 使用Cookie保存复杂对象 Js中读写Cookie Cookie在Session中的应用 Cookie在身份验证中的应用 Cookie的 ...

随机推荐

  1. hihoCoder挑战赛11 A 随机斐波那契

    算了前三项.....发现是个大水题...   #include<stdio.h> int main() { int n; while (~scanf("%d", &am ...

  2. JS同源策略和跨域问题

    同源策略和跨域问题:http://www.cnblogs.com/chaoyuehedy/p/5556557.html 深入浅出JSONP--解决ajax跨域问题:http://www.cnblogs ...

  3. Markdown转pdf

    最近由于项目需要,要用到把markdown转换成pdf文件下载下来,最开始的时候想到的是先把markdown转成html,用到的是Parsedown:然后再将html转成pdf,用到了html2pdf ...

  4. ARC下面的对象被释放的bug

    一般在ARC管理的方式之下,很难出现对象被过度释放的问题,下面是我将遇到的一个crash. * thread #: tid = , queue = , address=0x18) frame #: f ...

  5. netty初探(1)

    参考目录: 1. user-guide : http://netty.io/wiki/user-guide-for-4.x.html 2. demo: http://netty.io/wiki/ 3. ...

  6. jsonp原来是这么回事,豁然开朗

    什么是JSONP 先说说JSONP是怎么产生的: 其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题, ...

  7. Excel教程(8) - 财务函数

    ACCRINT 用途:返回定期付息有价证券的应计利息. 语法:ACCRINT(issue,first_interest, settlement, rate,par,frequency, basis) ...

  8. HDU 1863 Kruskal求最小生成树

    好久没写博客了写着玩的…… Kruskal这种东西离散都学过…… 一句话…… 添加当前图权值最小且构不成环的一条边 直到连接所有点…… 其他人好多Kruskal的模版 肯定有比我的好的…… 就是刷一波 ...

  9. 亲身体验:digitalocean vps能做的10件事

    我写过一篇亲身体验:digitalocean和linode评测哪个好,帮助不少网友选购价格便宜性能优异的免备案vps,相信大家对两家产品有所了解.vps的性能和用途远远超过传统的虚拟主机,你拥有独立I ...

  10. Bug(案例)图片的垂直出现隐藏

    这个案例是一个出Bug的案例,很抱歉本人没有找到bug在哪,但是功能却实现了. <!DOCTYPE html> <html> <head> <meta cha ...