cookie彻底研究

网摘:http://hi.baidu.com/sshsoft/blog/item/0a02633eaca8d43b70cf6cd9.html

 1.标准方法

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" >
  3. <head>
  4.     <title>标准的cookie操作</title>
  5.     <script type="text/javascript">
  6.         //设置cookie名,值,过期时间
  7.         function setCookie(c_name,value,expiredays)
  8.         {
  9.             var exdate=new Date()
  10.             exdate.setDate(exdate.getDate()+expiredays)
  11.             document.cookie=c_name+ "=" +escape(value)+
  12.             ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
  13.         }
  14.         //取得cookie值
  15.         function getCookie(c_name)
  16.         {
  17.             if (document.cookie.length>0)
  18.               {
  19.               c_start=document.cookie.indexOf(c_name + "=")
  20.               if (c_start!=-1)
  21.                 { 
  22.                 c_startc_start=c_start + c_name.length+1 
  23.                 c_end=document.cookie.indexOf(";",c_start)
  24.                 if (c_end==-1) c_end=document.cookie.length
  25.                 return unescape(document.cookie.substring(c_start,c_end))
  26.                 } 
  27.               }
  28.             return ""
  29.         }
  30.         //使用上面两个函数,设置过期时间为一年。
  31.         function checkCookie()
  32.         {
  33.             username=getCookie('username')
  34.             if (username!=null && username!="")
  35.               {alert('Welcome again '+username+'!')}
  36.             else 
  37.               {
  38.                   username=prompt('Please enter your name:',"")
  39.                   if (username!=null && username!="")
  40.                     {
  41.                         setCookie('username',username,365)
  42.                     }
  43.               }
  44.         }
  45.     </script>
  46. </head>
  47. <body>
  48. <input type="button" value="cookie" onclick="checkCookie();" />
  49. </body>
  50. </html>

2.猴子的方法

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" >
  3. <head>
  4.     <title>js操作cookie</title>
  5.     <script type="text/javascript">
  6.     //猴子的方法
  7.     /*取出Cookie*/
  8.     function getCookie(name){var arr=document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));if(arr!=null)return unescape(arr[2]);return ""}
  9.     /*设置Cookie*/
  10.     function setCookie(name,value){var exp =new Date();exp.setTime(exp.getTime()+30*24*60*60*1000);document.cookie=name+"="+escape(value)+";expires="+ exp.toGMTString()}
  11.     </script>
  12. </head>
  13. <body>
  14. <input type="button" onclick='setCookie("k1","khello")' value="set" />
  15. <input type="button" onclick='alert(getCookie("k1"))' value="get" />
  16. </body>
  17. </html>

3.C#和js相互操作cookie示例

前台

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="js_cs_cookie.aspx.cs" Inherits="js_js_cs_cookie" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5.     <title>c#和js互操作cookie</title>
  6.     <script type="text/javascript">
  7.         //猴子的方法
  8.         /*取出Cookie*/
  9.         function getCookie(name){var arr=document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));if(arr!=null)return unescape(arr[2]);return ""}
  10.         /*设置Cookie*/
  11.         function setCookie(name,value){var exp =new Date();exp.setTime(exp.getTime()+30*24*60*60*1000);document.cookie=name+"="+escape(value)+";expires="+ exp.toGMTString()}
  12.     </script>
  13. </head>
  14. <body>
  15.     <form id="form1" runat="server">
  16.     <div>   
  17.     <input type="button" onclick='setCookie("k1","khello")' value="set" />
  18.     <input type="button" onclick='alert(getCookie("k2"))' value="get" />
  19.         <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  20.         <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
  21.     </form>
  22. </body>
  23. </html>

后台

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. public partial class js_js_cs_cookie : System.Web.UI.Page
  12. {
  13.     protected void Page_Load(object sender, EventArgs e)
  14.     {
  15.     }
  16.     protected void Button1_Click(object sender, EventArgs e)
  17.     {
  18.         if (this.TextBox1.Text.Trim() == "get")
  19.             Response.Write(getCookie("k1"));
  20.         else
  21.             setCookie("k2""khello1");
  22.     }
  23.     /// <summary>
  24.     /// 增加一下Cookie
  25.     /// </summary>
  26.     /// <param name="strName"></param>
  27.     /// <param name="strValue"></param>
  28.     /// <returns></returns>
  29.     public bool setCookie(string strName, string strValue)
  30.     {
  31.         try
  32.         {
  33.             HttpCookie Cookie = new HttpCookie(strName);
  34.             Cookie.Expires = DateTime.Now.AddDays(100);//过期时间设置
  35.             Cookie.Value = System.Web.HttpContext.Current.Server.UrlEncode(strValue);//进入Url编码。
  36.             System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
  37.             return true;
  38.         }
  39.         catch
  40.         {
  41.             return false;
  42.         }
  43.     }
  44.     /// <summary>
  45.     /// 取得Cookie值,经过Url解码。
  46.     /// </summary>
  47.     /// <param name="strName"></param>
  48.     /// <returns></returns>
  49.     public string getCookie(string strName)
  50.     {
  51.         HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName];
  52.         if (Cookie != null)
  53.         {
  54.             return System.Web.HttpContext.Current.Server.UrlDecode(Cookie.Value);
  55.         }
  56.         else
  57.         {
  58.             return "无";
  59.         }
  60.     }
  61. }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着互联网的发展和普及,网站和应用程序越来越多,用户也越来越多。对于这些网站和应用程序来说,如何记录用户的信息和状态是一个非常重要的问题,因为只有这样才能提供更好的服务和更好的用户体验。而cookie、session、token就是三种常用的记录用户信息和状态的方式。 首先,cookie是一种存储在客户端浏览器中的文本文件,用于存储用户的一些信息。当用户在浏览器中打开一个网站时,网站服务器会发送一个包含一些信息的cookie给用户的浏览器。浏览器在接收到cookie后会以键值对的形式将它们存储在本地,然后在下一次访问该网站时再将cookie发送给服务器。服务器通过读取这些cookie中的信息,就可以知道该用户的一些状态和偏好,从而提供更好的服务。 其次,session是一种服务器端技术,用于记录用户的会话状态。当用户第一次访问一个网站时,网站服务器会为该用户创建一个session,然后在服务器端存储用户的一些信息。当用户进行一些操作时,服务器端会根据该用户的session来判断其当前的状态和权限,并根据这些信息进行相应的处理。当用户关闭浏览器时,与该用户相关的session会被销毁。 最后,token是一种用于验证用户身份的令牌。当用户输入用户名和密码进行登录时,服务器会生成一个token,并将该token返回给客户端。客户端在后续的请求中需要带上该token,服务器收到请求后会根据token来验证用户身份,从而决定是否允许该请求。token不存储在客户端,而是存储在服务器端的数据库或者内存中,因此可以防止一些与cookie相关的安全问题,例如CSRF攻击和 XSS攻击。 总的来说,cookie、session、token可以作为不同的方式来记录用户的信息和状态,这些方式都有自己的优缺点,应该根据具体的需求来选择适合的方式。同时,为了确保安全性,应该采取一些措施来减少一些可能出现的安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值