深入解析javascript与asp.net对Cookie操作的异同,以及如何共用(一)。

简介: 原文 http://www.cnblogs.com/leleroyn/archive/2012/02/22/2362746.html 在网站开发过程中,不管是前台用javascript还是在后台用服务器端语言处理cookie,是作为一个web开发者都必须要熟练掌握的技能。

原文 http://www.cnblogs.com/leleroyn/archive/2012/02/22/2362746.html

在网站开发过程中,不管是前台用javascript还是在后台用服务器端语言处理cookie,是作为一个web开发者都必须要熟练掌握的技能。

相信大家在开发过程中都经常用到。然而如何让前端和后端同时获取同一份cookie我们还是需要花费上点心思。

下面我将着重介绍下这方面的见容:

1,首先多们用js向网站写入一cookie(单键值的比较容易,我这里只讲述下一个cookie下多键值的处理)

为了简单,这里我们用jquery.cookie.js插件来操作cookie,代码如下:

?
1
$.cookie( 'book' , 'sn=081245&title=你不能不知道的.net' );

执行后我们得到的结果是:

image

 

2,接下来我们用C#代码在后端来实现同样的功能,代码如下:

?
1
2
3
4
HttpCookie bookCookie = new HttpCookie( "book" );
            bookCookie[ "sn" ] = "081245" ;
            bookCookie[ "title" ] =  HttpUtility.UrlEncode( "你不能不知道的.net" );
            Response.AppendCookie(bookCookie);

image

细心的你一定发现其实里面的cookie其实有点还不一样,对那就是“=”在用jquery.cookie.js插件处理时也被编码啦,这样的结果当然不符合我们的目标的。

其实这不难理解,jquery.cookie.js内部把'sn=081245&title=你不能不知道的.net'当作一个字串给编码啦,那好,我们就去jquery.cookie.js修改下代码,把编码的工作交给我们自己来处理。

我们找到相应的代码

?
1
document.cookie = [name, '=' , encodeURIComponent(value), expires, path, domain, secure].join( '' );

 

修改为

?
1
document.cookie = [name, '=' , value, expires, path, domain, secure].join( '' );
这样我们上面的js的代码也要做相应的处理啦,修改后为:
?
1
function writeCookie()
?
1
2
3
{
   $.cookie( 'book' , 'sn=081245' + '&title=' +encodeURIComponent( '你不能不知道的.net' ));
}

经过这样的处理我们保证了前端各后端写入的cookie值是一致的,为后面的的读取作基础,下一篇我将继续讲述 cookie在前,后端读取一致,并提供相应源码下载。

本章需要注意的几点问题:

1,对于非英文和数字等一定要编码后再写入。

2,js和asp.net后台对应的编码函数为encodeURIComponent。

源码:猛击下载

 

原创文字只代表本人某一时间内的观点或结论,本人不对涉及到的任何代码担保。转载请标明出处!

目录
相关文章
|
存储 前端开发 安全
前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
本文全面解析前端三种数据存储方式:Cookie、LocalStorage与SessionStorage。涵盖其定义、使用方法、生命周期、优缺点及典型应用场景,帮助开发者根据登录状态、用户偏好、会话控制等需求,选择合适的存储方案,提升Web应用的性能与安全性。(238字)
1229 0
|
开发框架 JavaScript 前端开发
揭秘:如何让你的asp.net页面变身交互魔术师——先施展JavaScript咒语,再引发服务器端魔法!
【8月更文挑战第16天】在ASP.NET开发中,处理客户端与服务器交互时,常需先执行客户端验证再提交数据。传统上使用ASP.NET Button控件直接触发服务器事件,但难以插入客户端逻辑。本文对比此法与改进方案:利用HTML按钮及JavaScript手动控制表单提交。后者通过`onclick`事件调用JavaScript函数`SubmitForm()`来检查输入并决定是否提交,增强了灵活性和用户体验,同时确保了服务器端逻辑的执行。
285 5
|
存储 安全 NoSQL
Cookie、Session、Token 解析
Cookie、Session、Token 解析
1362 1
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
309 5
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
236 1
|
存储 JavaScript 前端开发
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
294 1
|
JavaScript vr&ar 数据库
技术笔记:Js获取当前日期时间及其它操作
技术笔记:Js获取当前日期时间及其它操作
904 1
|
存储 前端开发 JavaScript
回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。
【6月更文挑战第27天】回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。它作为参数传递给其他函数,在特定条件满足或任务完成后被调用。例如,`asyncOperation`函数接受回调函数`handleResult`,模拟异步操作后,调用`handleResult`传递结果。这样,当异步任务完成时,`handleResult`负责处理结果。
281 1
|
存储 JavaScript 前端开发
JavaScript中的数组是核心数据结构,用于存储和操作序列数据
【6月更文挑战第22天】JavaScript中的数组是核心数据结构,用于存储和操作序列数据。创建数组可以使用字面量`[]`或`new Array()`。访问元素通过索引,如`myArray[0]`,修改同样如此。常见方法包括:`push()`添加元素至末尾,`pop()`移除末尾元素,`shift()`移除首元素,`unshift()`添加到开头,`join()`连接为字符串,`slice()`提取子数组,`splice()`进行删除、替换,`indexOf()`查找元素位置,`sort()`排序数组。还有其他如`reverse()`、`concat()`等方法。
294 2