什么是Cookies?

Cookies是数据包,可以让网页具有记忆功能,在某台电脑上记忆一定的信息。Cookies的工作原理是,第一次由服务器端写入到客户端的系统中。以后每次访问这个网页,都是先由客户端将Cookies发送到服务器端,再由服务器端进行判断,然后再产生HTML代码返回给客户端,这是一个很重要的原理。

Cookie是怎样工作的?

Cookies将通过HTTP Headers来从服务端返回到浏览器上。服务端首先在响应中利用Set-Cookie header来创建一个Cookie,浏览器后面的请求的cookie header中就会返回这个Cookie来完成浏览器的认证。

假设你创建了一个名字为UserName的Cookie来包含访问者的信息,创建Cookie时,Server的Header就象下面(假设访问者为suosams):

Set-Cookie: UserName=suosams;path=/;domain=asp163.org;

expires=2010/10/20

这个Header就在浏览器的电脑上的Cookie文件中添加了一条记录。浏览器将名字为UserName的Cookie赋值为suosams。请注意这个cookie的值是进行了URL-encoded操作的。

浏览器创建了一个Cookie后,在每一个针对该网站的请求时,如果符合设定条件(Domain和Path),都会在Header中带着这个Cookie,对于不符合条件的及其他网站的请求Cookie是绝对不会跟着发送的。

关于Cookie字典,Header中的信息

Response.Cookies("mm")("name")="suosams"
Response.Cookies("mm")("pwd")="123456"

当这么Cookie字典创建时,请求的Header中是这样的信息:

Set-Cookie:mm=name=suosams&pwd=123456

Cookie在ASP中的最常用的方法

1、如何写入及读取Cookies?

Response.Cookies("字段名")=变量或字符串,例如:
Response.Cookies("url")="www.asp163.org"
a=Request.Cookies("url")

Response.Cookies("mm")("url")="www.asp163.org"
a=Request.Cookies("mm")("url")

读cookies的过程是:先从客户端的内存中找该作用域的Cookies信息,如果没有,从客户端的IE缓存中找该作用域的Cookies文件,如果没有,从上级作用域的Cookies文件中去找...如果都没有,将读不到信息。优先级为:内存本作用域>IE缓存本作用域>IE缓存上级作用域

2、如何设置Cookies过期时间?

Expires属性: 指定了该cookie的过期时间;

有了该句后会在客户IE缓存中生成一个cookies文件;如果没有该句,不会生成cookies文件,cookies信息将保存在客户的内存中,该信息在IE进程内有效,即用户关闭该站的所有页面后该信息自行消失。

Response.Cookies("字段名").Expires=时间函数+N,例如:
Response.Cookies("name").Expires=Date+1  '表示Cookies保存1天。

'Cookies保存8小时
Response.Cookies("mm").Expires=Hour+8'错误写法,另外保存10秒 Second(Now)+10也是错误的
Response.Cookies("mm").Expires=DateAdd("h",8,Now())'正确写法

'Cookies保存20秒
Response.Cookies("mm").Expires=Second(Now)+20'错误写法
Response.Cookies("mm").Expires=DateAdd("s",20,Now())'正确写法

A页面内容<%
Response.Cookies("mm")("url")="www.asp163.org"
Response.Cookies("mm").Expires=DateAdd("s",10,Now())
Response.Write Request.Cookies("mm")("url")
%>
B页面内容<%=Response.Write request.cookies("mm")("url")%>

Response.cookies("mm").Expires="2010/10/20"  '表示Cookies到2010/10/20过期。
Response.cookies("mm").Expires=#2010/10/20#  '表示Cookies到2010/10/20过期。

3、Domain属性

Response.cookies("mm").Domain="asp163.org"

Domain属性: Domain属性能够在浏览器端对Cookie发送进行限定。在这个例子中,Cookie只能发送到asp163.org这个域中,而决不会跑到什么www.163.com或者什么其他网站。

4、Path属性[只写]

Response.cookies("mm").Path="/user"

Path属性: 指定了该Cookie只能发送到路径/user的请求中。就是说只有/user目录下的文件(包含子目录下的文件)才可以访问这个Cookie;其它目录则无法访问,比如根目录下所有文件或/zj目录下的则无法访问这个Cookie

Path,即作用域,可以理解为:写到该作用域的数据,只有在站点下的文件夹(包括子文件夹)下的页面内才可以读到,即作用域为文件夹。如果去掉该句,默认在本站点下或该代码页所在的虚拟目录下有效。例如:在子文件夹下不设定path或path="/",生成的cookies作用域为整个站点;在虚拟目录下不设定path,生成的cookies作用域为本虚拟目录;path="/myasp",生成的cookies作用域为站点下myasp子目录

注意:现在的浏览器在判断Cookie的路径时是区分大小写的,这就意味着如果路径是/user,那么以/USER路径方式就无法进行这个Cookie的调用和认证。

5、Secure属性

该属性设为True则在数据传输过程中采用加密算法,如果你正在使用安全接口层,那么你就可以使用这个属性

Response.cookies("mm").Secure=True

6、Cookie字典

Response.Cookies("mm")("url")="www.asp163.org"
Response.Cookies("mm")("admin")="大头爸爸"

这个脚本创建了一个名为mm的Cookie字典,其中含有两个键分别是url和admin

如果希望知道一个Cookie是否是一个Cookie字典,可以用HasKeys属性,如果返回值True,那么就是一个Cookie字典。

IF Request.Cookies("mm").HasKeys Then Response.Write "这是一个Cookie字典"

cookies字典取值

<%
response.cookies("a")("a")="c"
response.cookies("a")("b")="c"
response.cookies("c")("c")="1234"
response.cookies("a")("d")="222"
response.cookies("a")("e")="abcd"
response.cookies("a")("f")="aac"
response.cookies("c")("g")="c"
response.cookies("a")("h")="我们"

for each key in request.cookies("a")
  response.write request.cookies("a")(key) & "<br>"
next
%>

7、清空Cookies

在以往的ASP教程中,很少有介绍Cookies退出的方法。在“退出”这个ASP页中可以这样写:
Response.Cookies(mm).Expires=Now()-1'删除Cookies,设置过期时间(-1天)
Response.Cookies("字段名")=""
之后,在客户端的浏览器就清除了Cookies,并且Cookies文件会消失。注意有多少个字段,就要写多少句来清除。

Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源;而“Session”则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。

注意:利用Cookie技术传递诸如密码这样的信息要特别小心,因为一般说来,这种信息是未经加密的,当然,如果你的网站有安全接口层技术,也可以进行加密传输,但是在浏览器端该信息还是存放在文本文件中。

例子:

<%
'刷新页面或再次打开此页面时,显示的顺序将颠倒,为什么??
Response.Cookies("TestCookies1")("Name")="Test Cookies 1"
Response.Cookies("TestCookies1")("Name")="TestCookies1"
Response.Cookies("TestCookies1").path="/"
Response.Cookies("TestCookies1").expires=#2004/7/25#
Response.Cookies("TestCookies2")="Test Cookies 2"
Response.Cookies("TestCookies2").path="/"
Response.Cookies("TestCookies2").expires=#2004/7/25#
%>
<html>
<head>
<title>Cookie的使用--创建、读取cookies值</title>
</head>
<body>
<%
'利用循环读取TestCookies1
For Each cookiesname IN Request.Cookies
  IF Request.Cookies(cookiesname).haskeys then
    For Each keycookies IN Request.Cookies(cookiesname)
      Response.Write keycookies & "的内容值是: " & Request.Cookies(cookiesname) & "<br>"
    Next
  Else
    Response.Write Cookiesname & "的内容值是: " & Request.Cookies(cookiesname) & "<br>"
  End IF
Next
%>
</body>
</html>

每个Cookie的最大字节4KB,最多可以有300个Cookie 1.2MB

Asp之Cookie篇—概述Cookie原理、归纳Cookie方法属性及应用相关推荐

  1. ASP.NET中IP地址,当前用户的方法属性大整合- -

    1. 在ASP.NET中专用属性: 获取服务器电脑名: Page.Server.ManchineName 获取用户信息: Page.User 获取客户端电脑名:Page.Request.UserHos ...

  2. ASP.Net学习笔记015--ASP.Net中使用Cookie

    ASP.Net学习笔记015--ASP.Net中使用Cookie 表单数据欺骗: 原理跟收到欺骗短信一样,移动信号塔[基站],伪装的移动信号塔会屏蔽移动信号,并且 在信号范围内的手机会自动切换为接收伪 ...

  3. C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  4. [转]Asp.Net Core 简单的使用加密的Cookie保存用户状态

    本文转自:http://www.cnblogs.com/Joes/p/6023820.html 在以前的Asp.Net中可以用 FormsAuthentication 类的一系列方法来使用加密的Coo ...

  5. ASP.NET中的两个Cookie类:HttpCookie类与Cookie类

    System.Web.HttpCookie类,对应集合类System.Web.HttpCookieCollection类 System.Net.Cookie类,对应集合类System.Net.Cook ...

  6. [保存]C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  7. COOKIE和Session的原理及异同

    COOKIE和Session的原理及异同 1. cookie的创建和读取 cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的w ...

  8. java cookie全解析(session与cookie的机制和原理)

    http://www.cnblogs.com/agilework/articles/2290240.html 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚 ...

  9. 把数据保存到cook_JavaScript数据存储 Cookie篇

    1.什么是cookie? 答:cookie是用于在客户端存储会话信息的. 2.cookie的组成部分?    ①名称:一个唯一确定cookie 的名称.建议区分大小写.cookie 的名称必须是经过U ...

最新文章

  1. 魅族手机使用应用沙盒一键修改位置数据
  2. mongodb 聚合 分组查询
  3. mysql无法与外部健形成约束_MySQL Rails:错误:150“外键约束不正确”
  4. php映射,PHP实现路由映射到指定控制器
  5. Laravel 使用 scout 集成 elasticsearch 做全文搜索
  6. 红黑树的红黑有什么意义_红枸杞和黑枸杞有什么不同?黑枸杞真的比红枸杞要好吗?...
  7. 怎样远程访问 MySQL
  8. 转载:东拉西扯:产业链
  9. C语言指针的使用例子(1)指针地址的输出
  10. 火车售票系统html模板,火车售票系统设计
  11. android表情选择器,android 新浪微博客户端的表情功能的实现
  12. 'Data_Label_Tools - 开源数据标注工具大列表
  13. 单纯形法中大m法_线性规划 第五讲 单纯形法及进一步讲解(大M法).ppt
  14. 【从零开始学TVM】三,基于ONNX模型结构了解TVM的前端
  15. 美团监控系统mysql_美团MySQL数据库巡检系统的设计与应用
  16. macd底背离的python_Python量化交易之MACD'顶底背离'形态的实现,自动化交易!
  17. 企业微信和钉钉的区别以及企业微信的功能
  18. PLC网络流量异常检测的统计模型和神经网络模型的比较研究
  19. 竞赛题-6283. 正整数和负整数的最大计数
  20. JAVA中list根据某个字段排序

热门文章

  1. T-SQL查询语句(一)
  2. 万字长文简单明了的介绍xxl-job以及quartz
  3. [藏]疯狂的极端,20款IM,UI比比看
  4. linux是什么操作系统_Linux的优势
  5. 通俗易懂聊springMVC中的handler是什么
  6. 【笔记】实战mpvue2.0多端小程序框架——原生小程序 API 调用与多端小程序发布
  7. 解读PMP考点:管理储备和应急储备
  8. 【计息日期】国债逆回购类产品的起息日期和兑付日期,如何用python优雅实现?~
  9. Java面试题-进阶篇(2022.4最新汇总)
  10. 新手学网站建设解疑与技巧1200例