转自: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. input、button、a标签 等定义的按钮尺寸的兼容性问题

    在项目中有遇到这类问题,搜索了一下解决方式,采用链接:https://segmentfault.com/q/1010000000190931 里各位楼主的答案,摘抄如下: 例子如下: HTML: &l ...

  2. 【Sort】希尔排序

    希尔排序(ShellSort),缩小增量排序,使用希尔增量时最坏运行时间O(n^2),不同的增量会对运行时间产生显著影响. void shellsort(int *nums,int n) { int ...

  3. CF 604B More Cowbell#贪心

    (- ̄▽ ̄)-* //把最大单独放,然后第二大的和最小的放一起,第三大的和第二小的放一起 //由此类推,求最大值,即为盒的最小值 #include<iostream> #include&l ...

  4. Lua入门基础

    什么是Lua Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...

  5. CSS3 学习小结

    写样式时有时遇到浏览器兼容问题:-webkit-transition:chrome和safari-moz-transition:firefox-ms-transition:IE-o-transitio ...

  6. C# 语言规范_版本5.0 (第1章 介绍)

    1. 介绍 C#(读作“See Sharp”)是一种简洁.现代.面向对象且类型安全的编程语言.C# 起源于 C 语言家族,因此,对于 C.C++ 和 Java 程序员,可以很快熟悉这种新的语言.C# ...

  7. web通知

    <html> <head> <title>桌面通知</title> <meta name="description" cont ...

  8. chapter 14_1 环境

    Lua将其所有的全局变量保存在一个常规的table中,称为“global environment”. Lua将环境table自身保存在一个全局变量_G中,_G._G等于 _G . 比如下面的代码打印出 ...

  9. oc 是否允许远程通知

    UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSett ...

  10. mysql5.6 online ddl—索引

    尝试对mysiam表(1500万)删除索引失败 #uk表字段类型比较简单,都是int/tinyint/timestamp类型. CREATE TABLE `uk` (  `id` int(11) NO ...