ASP Cookie

什么是 Cookie

Cookie 是服务器保存在用户浏览器(电脑)上的小型文本文件,用来识别用户、保存少量信息。 流程:

  1. 服务器通过 Response.Cookies 下发 Cookie,浏览器保存
  2. 后续浏览器访问该网站时,会自动把 Cookie 随同请求发给服务器
  3. 服务器用 Request.Cookies 读取 Cookie

重点:Response.Cookies 写Cookie,必须放在 <html> 标签之前,否则会报错(HTTP头已经输出,不能再设置Cookie)。

1. 创建简单Cookie(单个值)

<%
' 创建cookie,名字firstname,值Alex
Response.Cookies("firstname")="Alex"
' 设置过期时间,不设置的话,浏览器关闭cookie就消失(会话CookieResponse.Cookies("firstname").Expires=#May 10,2012#
%>
<html>
<body>
...
</body>
</html>
Code language: HTML, XML (xml)
  • Expires:过期时间。一旦到时间,浏览器自动删除这个Cookie。
  • 不写Expires:会话Cookie,关闭浏览器就失效。

2. 读取简单Cookie

Request.Cookies 读取客户端带过来的Cookie

<%
fname=Request.Cookies("firstname")
response.write("Firstname=" & fname)
%>
Code language: JavaScript (javascript)

3. 带Keys的Cookie

Cookie集合,一个Cookie名下面存多个键值

一个Cookie名称下保存多组数据,叫做带Keys的Cookie。

<%
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Smith"
Response.Cookies("user")("country")="Norway"
Response.Cookies("user")("age")="25"
%>
Code language: JavaScript (javascript)

相当于:Cookie名字叫user,里面有多个字段:firstname、lastname

读取单个key:

<%
dim fname
fname=Request.Cookies("user")("firstname")
response.write(fname)
%>
Code language: HTML, XML (xml)

4. 循环读取页面全部Cookie

判断HasKeys

Request.Cookies(x).HasKeys:判断这个Cookie是不是带Keys的集合。

  • HasKeys=True:这个Cookie下面还有多个子键,需要内层循环
  • HasKeys=False:普通单值Cookie
<!DOCTYPE html>
<html>
<body>
<%
dim x,y
for each x in Request.Cookies
    response.write("<p>")
    if Request.Cookies(x).HasKeys then
        '带keys,内层循环遍历所有子键
        for each y in Request.Cookies(x)
            response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
            response.write("<br>")
        next
    else
        '普通cookie,直接取值
        Response.Write(x & "=" & Request.Cookies(x) & "<br>")
    end if
    response.write "</p>"
next
%>
</body>
</html>
Code language: PHP (php)

5. 删除Cookie

Cookie不能直接删除,原理:把过期时间设置成过去的时间,浏览器自动清理

<%
Response.Cookies("firstname")="Alex"
Response.Cookies("firstname").Expires=#Jan 01,1990#
%>
Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注