cookie的三种操作方法
1,jquery.cookie.js
这一篇文章已经写的很详细了:
http://www.cnblogs.com/afuge/archive/2013/07/03/3169048.html
2,原生js操作cookie
jquery.cookie.js一般会出现cookie不兼容问题就要用原生的js了
<script language=javascript> //获得coolie 的值function cookie(name){ var cookieArray=document.cookie.split("; "); //得到分割的cookie名值对 var cookie=new Object(); for (var i=0;i<cookieArray.length;i++){ var arr=cookieArray[i].split("="); //将名和值分开 if(arr[0]==name)return unescape(arr[1]); //如果是指定的cookie,则返回它的值 } return ""; } function delCookie(name)//删除cookie{ document.cookie = name+"=;expires="+(new Date(0)).toGMTString();}function getCookie(objName){//获取指定名称的cookie的值 var arrStr = document.cookie.split("; "); for(var i = 0;i < arrStr.length;i ++){ var temp = arrStr[i].split("="); if(temp[0] == objName) return unescape(temp[1]); } }function addCookie(objName,objValue,objHours){ //添加cookie var str = objName + "=" + escape(objValue); if(objHours > 0){ //为时不设定过期时间,浏览器关闭时cookie自动消失 var date = new Date(); var ms = objHours*3600*1000; date.setTime(date.getTime() + ms); str += "; expires=" + date.toGMTString(); } document.cookie = str;}function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值{ var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();}function getCookie(name)//取cookies函数 { var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null;}function delCookie(name)//删除cookie{ var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();}</script>3,服务器端处理
/// <summary>
/// 将点击的值存放到Cookie中
/// </summary>
private void SetCookieValue(HttpContext context, string dic, string cookieName, string keyName)
{
HttpCookie cookie = new HttpCookie(cookieName);//初使化并设置Cookie的名称
if (context.Request.Cookies[cookieName] != null)
{
cookie = context.Request.Cookies[cookieName];
if (cookie.Values.Count > 0 && cookie.Values.GetValues(keyName) != null && cookie.Values.GetValues(keyName).Length > 0)
{
Remove(cookieName, keyName);
}
}
TimeSpan ts = new TimeSpan(0, 3, 0, 0, 0);//过期时间为3小时
cookie.Expires = DateTime.Now.Add(ts);//设置过期时间
cookie.Values.Add(keyName, dic);
context.Response.AppendCookie(cookie);
//NCookieUtil.SetCookie(keyName, dic);
}
/// <summary>
/// 将点击的值从Cookie中取出
/// </summary>
public string GetClickValue(HttpContext context, string cookieName, string keyName)
{
string userName = "";
if (context.Request.Cookies[cookieName] != null)
{
if (context.Request.Cookies[cookieName][keyName] != null)
{
userName = context.Request.Cookies[cookieName][keyName].ToString();
}
}
//userName = NCookieUtil.GetCookie(keyName);
return userName;
}
/// <summary>
/// 移除cookie中指定的键,若是最后一个键则移除这个cookie
/// </summary>
public static void Remove(string cookieName, string keyName)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
if (cookie != null)
{
if (cookie.Values.Count > 0)
{
if (cookie.Values.Count == 1)
{
//若是最后一个键则移除这个cookie,否则会多出一个空值
cookie.Values.Remove(HttpUtility.UrlEncode(keyName));
cookie.Expires = DateTime.Now.AddDays(-1);
}
else
{
cookie.Values.Remove(HttpUtility.UrlEncode(keyName));
}
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
}
其实这三种方法还是建议用第二种方法!
cookie的三种操作方法的更多相关文章
- postman传入cookie的三种方式
1.直接在环境变量里面设置 2.在登录接口的tests,把返回值的cookie设置为全局变量 3.直接在cookie里面传入
- Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08
目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件 ...
- 三种urllib实现网页下载,含cookie模拟登陆
coding=UTF-8 import re import urllib.request, http.cookiejar, urllib.parse # # print('-------------- ...
- 多对多的三种创建方式-forms相关组件-钩子函数-cookie与session
多对多的三种创建方式 1.全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改 manyToManyField创建的第三张表属于虚拟的, ...
- 转:三种状态对象的使用及区别(Application,Session,Cookie)
Application状态对象 Application 对象是HttpApplication 类的实例,将在客户端第一期从某个特定的ASP.NET应用程序虚拟目录中请求任何URL 资源时创建.对于We ...
- ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得 ...
- 通过三个DEMO学会SignalR的三种实现方式
一.理解SignalR ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信(即:客户端(Web页面)和服务器端可以互相实时的通知消息 ...
- WEB项目会话集群的三种办法
web集群时session同步的3种方法 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上, 如果session不同步的 ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
随机推荐
- PHP 下的SSL加密设置
这个是报的错[Composer\Downloader\TransportException] The . OpenSSL Error messages: error::SSL routines:SSL ...
- 接口测试之soupui&groovy
原著地址:http://www.cnblogs.com/wade-xu/p/4236295.html#3334654 需注意下方code的设置
- passing ‘const ’ as ‘this’ argument of ‘’ discards qualifiers 错误处理
示例程序: #include <iostream> #include <set> using namespace std ; class StudentT { publ ...
- Odoo中的Javascript单元测试
前端页面利用QUnit进行单元测试,本文参考官方文档:https://www.odoo.com/documentation/8.0/reference/javascript.html 访问/web/t ...
- print_r、echo、var_dump三者的区别
这三者均是php里输出的方式. 1.print_r用于输出数组. 2.echo只能用于输出字符串,在没有框架的时候,多用这种方法将结果打印在html页面上. 3.var_dump能输出任何类型的数据, ...
- css限制div字符超出部分,简单有方便
text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-w ...
- php修改指定文件的指定内容
<?php $origin_str = file_get_contents('路径/文件.txt'); $update_str = str_replace('qwe=0', 'qwe=1', $ ...
- hdu N皇后问题
此题是很基本的dfs的题目 ,但是要打表,否则会超时. 这题的思路就是从第一行一直放到第n行,因此行方面的判断就可以省略了.因此只要判断列方面和斜线方面是否满足条件,列方面用一个vis数组来记录是否已 ...
- Iconfont矢量图标平台全面升级
阿里UX矢量图标库今天全新发布上线了,这次升级相对于老版本做了30多项功能和体验上的改善:赶快来体验一下吧!! 请猛戳:www.iconfont.cn 请猛戳:www.iconfont.cn 设计师p ...
- echarts一个页面动态加载两张不同图表数据
参考 http://www.stepday.com/topic/?877 http://blog.csdn.net/for_china2012/article/details/45167161 // ...