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的 ...
随机推荐
- HDU2037今年暑假不AC(贪心)
Problem Description “今年暑假不AC?”“是的.”“那你干什么呢?”“看世界杯呀,笨蛋!”“@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACM ...
- 《Mastering Opencv ...读书笔记系列》车牌识别(II)
http://blog.csdn.net/jinshengtao/article/details/17954427 <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- 关于 plsql连接oracle数据库的问题
因电脑没有 安装oracle服务器端,所以安装plsql后还是不能连接oracle数据库,网上下载一个oracle客户端工具,是绿色免安装的,解压就好.我放我云盘了. instantclient_11 ...
- emoji图像转码解码 存入数据库
public String emojiConvert1(String str) throws UnsupportedEncodingException { String patternString = ...
- Java 泛型 泛型数组
Java 泛型 泛型数组 @author ixenos 先给结论 不能(直接)创建泛型数组 泛型数组实际的运行时对象数组只能是原始类型( T[]为Object[],Pair<T>[]为Pa ...
- json 和 数组的区别
json是javascript中的一种数据格式,类似于数组,但又不同于数组,区别在于下标: 例如,var obj=[a:15,b:10,c:3,d:8]: //这是json的写法 var arr=[ ...
- LeetCode OJ 39. Combination Sum
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher ...
- CSS 背景 background 讲解
背景语法:background: background-color || background-image || background-repeat || background-attachment ...
- JS全选
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- java集合概念
Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据结构是数组,查询快,增删慢 线程安全,效率 ...