COOKIE用法大全ASP中的Cookie用法:Cookie是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个Web站点会话之间持久地保持数据。
Reque st和Response对象都有一组Cookie。
Request.cookie集合是一系列Cookie,从客户端与HTTP Request一起发送到Web服务器。
反过来,如果你希望把Cookie发送到客户机,就可以使用Response.Cookies. 1、Expires属性该属性可以赋一个日期,过了这个日期Cookie就不能再被使用了。
通过给Expires属性赋一个过期的日期,就可以删除Cookie。
如:<%Response.cookies("passtime").Expires=DateAdd("m", 1, NOW)%> 这样设置Cookie在一个月后过期。
2、Domain属性该属性定义Cooki e要传送的唯一域。
如:Cookie只传送给Microsoft的人,则可以使用以下代码。
<%R esponse.Cookies("domain").Domain="/"%> 3、ASP 用来写入Cookie即向客户机发送Cookie的语法如下:Response.Cookies("C ookie名").[("键名").属性]=内容如果某个ASP文件要创建一个Cookie,则下面的代码可以放在ASP文件的第一个<html>之前,以避免产生错误. <%Response.Cookie s("CookieName")="NewCookie" %> <html> ...... </html> 4、同样ASP用Re quest对象的Cookies集合来读取Cookie,如:<%Response.write Request.Cooki es("CookieName")%> 下面以一个完整的例子来说明Cookie:<% dim Num Num=Request.Cookies("Visit_num") if Num>0 then Num=Num+1 Response. write "您已是第" & Num & "次访问本站点了。
" else Response.write "欢迎您首次访问本站。
" Num=1 end if Response.Cookies("Visit_num")=Num %> 在该例子中,首先读取Cookies变量Visit_num,看用户端计算机是否保存有Cookies变量。
如果有该变量,则说明用户已经访问过该页面,同时输入出访问次数。
如果用户是首次访问该页面,则其计算机内不会有Cookies变量,程序会显示“欢迎”字样,然后将Cookies变量Visit_num存到用户计算机中,以便该用户下一次访问该页面时给出“访问的次数”信息。
5、Cookie字典有时在一个页面中可能需要定义很多个Cookies变量,为了更好地管理它,在Cookies组件中常引入一人的概念“子键”。
引用它的语法如下:Request. Cookies("变更名")("子键名")如下面的Cookie创建一个名为"Dictionary"的字典,其中保存了三个键值:<% Response.Cookie("info")("Myname")="jeff" Resp onse.Cookie("info")("Gender")="male" Response.Cookie("info")("Myheight")= "172" %> 事实上客户机上的Cookie字典是以字符串的形式存在:info=Myname=jeff&Gender=male&Myheight=172 如果用户没有指定“子键”名而直接引用Co okies变量,将会返回一个包含所有的“子键”名及值的字符串。
例如上面这个例子包含三个“子键”:"Myname"、"Gender"和"Myheight",当用户没有指定其“子键”而直接通过Re quest.Cookies("info")来引用时,则会得到下列字符串:info=Myname=jeff&Gende r=male&Myheight=172 如果要把Cookie中读取的所有数据,可以用下面的代码得到:<%For each cookie in Request.Cookies if Not cookie.HasKeys then R esponse.write cookie & "=" & Request.Cookies(cookie) Else for each key in Request.Cookies(cookie) Response.write cookie&"("&key&")"&"="& Request. Cookies(cookie)(key) next end if next %>常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。
1.在同一应用服务器内共享的方法:设置cookie.setPath("/"); 设本机tomcat/webapp下面有两个应用:cas和webapp_b1)原来在c as下面设置的cookie,在webapp_b下面获取不到, path默认是产生cookie的应用的路径。
2)若在cas下面设置cookie的时候,增加一条:cookie.setPath("/");或者cookie.setPath("/webapp_b/"); 就可以在webapp_b下面获取到cas设置的cookie了。
3)此处的参数,是相对于应用服务器存放应用的文件夹的根目录而言的(比如tomcat下面的webapp),因此cookie.setPath("/");之后,可以在webapp文件夹下的所有应用共享cookie,而cookie.setPath("/webapp_b/"),是指cas应用设置的cookie只能在webapp_b应用下的获得,即便是产生这个cookie的cas应用也不可以。
4)设置cookie.setPath("/webapp_b/jsp/")的时候,只有在webapp_b/jsp下面可以获得cookie,在webapp_b下面但是在jsp文件夹外的都不能获得cookie。
5)设置cookie.setPath("/webapp_b/"),是指在webapp_b下面才可以使用cookie,这样就不可以在产生cookie的应用cas下面获取cookie了。
6)有多条cookie.setPath("XXX");语句的时候,起作用的以最后一条为准。
7)设置多个path的方法??? 2.跨域共享cookie的方法:设置cookie.setDomain(""); A机所在的域:ngcha,A有应用cas B机所在的域:,B有应用webapp_b 1)在cas下面设置cookie的时候,增加cookie.setDomain("");,这样在webapp_b下面就可以取到cookie。
2)这个参数必须以“.”开始。
3)输入url访问webapp_b的时候,必须输入域名才能解析。
比如说在A机器输入:http://:8080/webapp_b,可以获取cas在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b则不可以获得cookie。
4)设置了cookie.setDomain("");,还可以在默认的下面共享。
5)设置多个域的方法Response.Cookie("username").value="aa" 写入username=Request.Cookies("username").value 读取最好用SESSION比较方便session("username")="aa" 写入username=session("username") 读取C# :方法1:Response.Cookies["username"].Value="gjy";Response.Cookies["username"].Expires=DateTime.Now.AddDays(1);方法2:System.Web.HttpCookie newcookie=new HttpCookie("username");newcookie.Value="gjy";newcookie.Expires=DateTime.Now.AddDays(1);Response.AppendCookie(newcookie);创建带有子键的cookies:System.Web.HttpCookie newcookie=new HttpCookie("user"); newcookie.Values["username"]="gjy";newcookie.Values["password"]="111";newcookie.Expires=DateTime.Now.AddDays(1);Response.AppendCookie(newcookie);cookies的读取:无子键读取:if(Request.Cookies["username"]!=null){Response.Write(Server.HtmlEncode(Request.Cookies["username"].V alue));}有子键读取:if(Request.Cookies["user"]!=null){Response.Write(Server.HtmlEncode(Request.Cookies["user"]["user name"].Value));另一种方法:写cookieHttpCookie cookie = new HttpCookie("Info");//定义cookie对象以及名为Info的项DateTime dt = DateTime.Now;//定义时间对象TimeSpan ts=new TimeSpan(1,0,0,0);//cookie有效作用时间,具体查msdncookie.EXPires = dt.Add(ts);//添加作用时间cookie.Values.Add("user","cxbkkk");//增加属性cookie.Values.Add("userid","1203");Response.AppendCookie(cookie);//确定写入cookie中读取cookieif(Request.Cookies["Info"]!=null){string temp=Convert.ToString(Request.Cookies["Info"].Values["user"])+" "+Convert.ToString(Re quest.Cookies["Info"].Values["userid"]);//读全部就用Request.Cookies["Info"].Value)if(temp==""){Response.Write("空");}elseResponse.Write(temp);}else{Response.Write("error");} 修改cookieResponse.Cookies["Info"]["user"] = "2";Response.Cookies["Info"].Expires = DateTime.Now.AddDays(1);// 删除cookie下的属性HttpCookie acookie=Request.Cookies["Info"];acookie.Values.Remove("userid");acookie.Expires = DateTime.Now.AddDays(1);Response.Cookies.Add(acookie); 删除所有cookie,就是设置过期时间为现在就行了int limit=Request.Cookies.Count - 1;for(int i=0;i<LIMIT;I++){acookie = Request.Cookies(i)acookie.Expires = DateTime.Now.AddDays(-1)Response.Cookies.Add(acookie)}// 读取所有cookiesHttpCookieCollection cookies;HttpCookie oneCookie;cookies = Request.Cookies;string[] cookieArray = cookies.AllKeys;for (int i=0; i < cookieArray.Length; i++){oneCookie = cookies[cookieArray[i]];Response.Write( + " - " + oneCookie.Value);}// 添加单个cookiesif (Request.Browser.Cookies == true){if (Request.Cookies["LastVisited1"] == null){HttpCookie newCookie = new HttpCookie("LastVisited1",DateTime.Now.ToString());newCookie.Expires = DateTime.Now.AddYears(1);Response.Cookies.Add(newCookie);}else{Response.Write(Request.Cookies["LastVisited1"].Value);}}。