asp(utf-8) set cookie 用 javascript 读cookie发现一个问题
asp:
<%setCookie("user_id","test")%> //传一个cookie ,名: user_id 值:test
javascript:
<script>
alert(getCookie("user_id")); //读取结果显示 null 晕!
</script>
用 firefox 查看cookie,发现浏览器存放的cookie有点不同。
cookie的名:user_id 改成了 user%5Fid
为什么名称会改变呢?我到百度搜索,找到原因:
http://bbs.chinaunix.net/thread-743431-1-1.html
原来当asp采用utf-8编码后,写入浏览器的cookie会进行 urlencode 编码。
解决办法就是在javascript里进行解码: decodeURIComponent
修改后的 javascript代码:
//设置名称为name,值为value的Cookie
function setCookie (name, value)
{
var argc = setCookie.arguments.length;
var argv = setCookie.arguments;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + value + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
}
//删除名称为name的Cookie
function deletecookie (name)
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = getCookie (name);
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
//取得项名称为offset的cookie值
function getCookieVal (offset)
{
var cookie_content = decodeURIComponent(document.cookie);
var endstr = cookie_content.indexOf (";", offset);
if (endstr == -1) endstr = cookie_content.length; return unescape(cookie_content.substring(offset, endstr)); }
//取得名称为name的cookie值
function getCookie (name)
{
var arg = name + "=";
var alen = arg.length;
var cookie_content = decodeURIComponent(document.cookie);
var clen = cookie_content.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (cookie_content.substring(i, j) == arg)
return getCookieVal (j);
i = cookie_content.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
asp(utf-8) set cookie 用 javascript 读cookie发现一个问题的更多相关文章
- jQuery操纵cookie(原生javascript处理cookie)
jQuery也是可以操作cookie的 1.首先下载jQuery.js 以及 jquery.cookie.js 这两个文件 2.安装(其实就是引用) <html> <he ...
- JavaScript BOM Cookie 的用法
JavaScript Cookie Cookie是计算机上存储在小文本文件中的数据.当Web服务器将网页发送到浏览器时,连接将关闭,服务器将忘记用户的所有内容.发明Cookie是为了解决“如何记住用户 ...
- JavaScript操作Cookie
在Web开发中,我们经常使用Cookie保存一些不是非常敏高的数据.比如“下次自动登录”,“广告显示”等功能.定义是:某些网站为了辨别用户身份而存储在用户本地终端(主要是浏览器)上的数据.定义域RFC ...
- JavaScript中cookie的路径(path)和域(domain)
cookie虽然是由一个网页所创建,但并不只是创建cookie的网页才能读 取该cookie.在默认情况下,与创建cookie的网页在同一目录或子目录下的所有网页都可以读取该cookie.但如果在这个 ...
- javascript 访问cookie信息
在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值.每个cookie除了 name ...
- 【读书笔记--cookie】JavaScript权威指南 第六版
遇到一些问题需要用cookie处理,正好读了一下犀牛书关于cookie的介绍,整理了一些笔记. cookie是指web浏览器存储的少量数据,同时它是与具体的web页面或者站点相关的. cookie数据 ...
- JavaScript 操作 Cookie
转自作者:聂微东出处:http://www.cnblogs.com/Darren_code/ 什么是 Cookie “cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器 ...
- JavaScript基础---Cookie
内容提纲: 1.cookie 2.cookie局限性 3.其他存储 发文不易,转载请注明出处链接,谢谢! 随着Web越来越复杂,开发者急切的需要能够本地化存储的脚本功能.这个时候,第一个出现的方案:c ...
- 自己实现FormsAuthentication.SetAuthCookie方法,怎样在ASP.NET服务端代码中删除客户端Cookie
如何手动设置AuthCookie ASP.NET中实现可以自己实现FormsAuthentication.SetAuthCookie方法,控制更为灵活 /// <summary> /// ...
随机推荐
- C#_委托与事件
委托: 把方法当作参数进行传递 public delegate void AddDelegate(string name); public class Ad{ //addDelegate就是委托的一个 ...
- 个人项目Week1
一.项目时间规划与实际用时 PSP2.1 Personal Software Process Stages 预计时间/h 实际时间/h Planning 计划 · Estimate · 估计这 ...
- 同步手绘板——PC端实现画板
同步显示上设想通过bitmap传值再在web端显示,查阅资料发现有点难以实现,所以在web也生成一个画板,实现与android端类似功能,由android传递路径集合到web端显示.
- PHP预防跨站脚本(XSS)攻击且不影响html代码显示效果
什么是XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往 ...
- activiti 工作流 动态 设置 指定 节点任务人、责任人、组 的实现方式
首先给大家看一下我的流程图: 流程文件leaveBill.bpmn <?xml version="1.0" encoding="UTF-8"?>&l ...
- Angular生成二维码
Installation - Angular 5+, Ionic NPM npm install angularx-qrcode --save Yarn yarn add angularx-qrcod ...
- CentOS 安全优化
1.操作系统和数据库系统管理用户身份鉴别信息令应有复杂度要求并定期更换. 配置# vi /etc/login.defs 系统默认配置: PASS_MIN_LEN=5 #密码最小长度 PASS_MAX_ ...
- C1考试科目一知识总结
第二 交通信号 交通信号灯 机动车信号灯(红灯停,路灯走,黄灯等) 车道信号灯(绿色箭头表示该车道通行,红色箭头和红叉表示该车道禁止通行) 方向指示信号灯(红色箭头表示该方向禁止通行,绿色箭头表示该方 ...
- Java关于struts2框架
今天研究了一下struts2框架,我不太喜欢理论的东西,我研究框架更喜欢打断点一步步跟着去看实现的过程.
- html DOM 方法和屬性
html利用javascript對節點執行動作: 每一個節點是一個節點對象,對節點的動作是通過方法和屬性接口實現的: 方法:就是執行的動作: 屬性就是節點的屬性(包括設置和獲取): 常見方法和作用: ...