当前位置: 移动技术网 > IT编程>开发语言>.net > APS.NET Cookie

APS.NET Cookie

2018年09月20日  | 移动技术网IT编程  | 我要评论

ca1329,夏天如何保养皮肤,海边风景图片

cookie 提供了一种在 web 应用程序中存储用户特定信息(如历史记录或用户首选项)的方法。cookie 是一小段文本,伴随着请求和响应在 web 服务器和客户端之间来回传输。cookie 包含每次用户访问站点时可由 web 应用程序读取的信息。

 

1. 写cookie

管理客户端计算机上的 cookie。使用 httpresponse 对象可向客户端发送 cookie,该对象会公开称为 cookies 的属性。任何需要 web 应用程序发送到浏览器的 cookie 都必须添加到此集合中。编写新 cookie 时,必须指定 name 和 value。每个 cookie 必须有一个唯一的名称,这样在以后当浏览器随同请求发送 cookie 时,web 应用程序就可以标识该 cookie。

默认情况下,cookie 由位于同一域中的所有页面共享,但可以通过设置 cookie 的 path 属性将 cookie 限制在网站中的特定子文件夹。若要允许应用程序的所有文件夹中的所有页面都检索一个 cookie,请从应用程序根文件夹中的页面设置该 cookie,但不要设置 path 属性。
如果不指定该 cookie 的过期限制,则该 cookie 将不会保留在客户端计算机上,当用户会话到期时该 cookie 即到期。
cookie 仅能存储 string 类型的值。在将任何非字符串值存储到 cookie 中之前,必须将它们转换为字符串

 

httpcookie mycookie = new httpcookie("cooker");
mycookie["name"] = "zzh";
mycookie["today"] = "friday";
mycookie.expires = datetime.now.adddays(1);
//mycookie.expires.adddays(1);
response.cookies.add(mycookie);
//response.appendcookie(mycookie);
mycookie.domain = "abc.com"; //指定作用域abc.com和子域名如a.abc.com可用
mycookie.path = "/admin"; //只能用于 admin 文件夹或虚拟根目录中的页面

2. 读cookie

 

出于安全原因,您只能读取属于同一域的页所设置的 cookie。如果已设置 cookie 的 path 属性,则只有该域路径中的页和子文件夹能够使用该 cookie。
在读取特定 cookie 值时,请测试该 cookie 是否存在以及它是否具有值,否则将发生异常。
cookie 中的所有值都作为 string 类型存储,因此若要将 cookie 值作为其他数据类型使用,必须对值进行相应地转换。

 

if (request.cookies["cooker"] != null)
{
    string cooker;
    if (request.cookies["cooker"]["name"] != null)
    { cooker = request.cookies["cooker"]["name"]; }
}

3. 删cookie

 

不能直接删除用户计算机中的 cookie。但是,可以通过将 cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 cookie。当用户下一次向设置该 cookie 的域或路径内的页发出请求时,浏览器将确定该 cookie 已到期并将其移除。

调用 cookies 集合的 remove 方法可从服务器端的集合中移除 cookie,使 cookie 不会被发送至客户端。但是,如果客户端已存在 cookie,则该方法无法从客户端将其移除。

 

if (request.cookies["cooker"] != null)
{
    httpcookie mycookie = new httpcookie("cooker");
    mycookie.expires = datetime.now.adddays(-1d);
    response.cookies.add(mycookie);
}
循环删

 

 

httpcookie acookie;
string cookiename;
int limit = request.cookies.count;
for (int i=0; i

 

 

4. 改cookie

不能直接修改 cookie。更改 cookie 的过程涉及创建一个具有新值的新 cookie,然后将其发送到浏览器来覆盖客户端上的旧版本 cookie。下面的代码示例演示如何更改存储用户对站点的访问次数的 cookie 的值

int counter;
if (request.cookies["counter"] == null)
    counter = 0;
else
{
    counter = int.parse(request.cookies["counter"].value);
}
counter++;
response.cookies["counter"].value = counter.tostring();
response.cookies["counter"].expires = datetime.now.adddays(1);

5. cookie安全

 

不要将任何关键信息存储在 cookie 中。例如,不要将用户的密码存储在 cookie 中,即使是暂时存储也不要这样做。通常,不要将任何信息保存在 cookie 中,因为一旦它被假冒,就会危及您的应用程序的安全。而是在 cookie 中保存对信息在服务器上的位置的引用。
将 cookie 的过期日期设置为可接受的最短实际时间。尽可能避免使用永久 cookie。
考虑对 cookie 中的信息。
考虑将 cookie 的 secure 和 httponly 属性设置为 true。


cookie.secure=true 使 cookie 只能在使用安全套接字层 (ssl) 的连接上传输。ssl 并不能防止保存在用户计算机上的 cookie 被读取或操作,但可防止 cookie 在传输过程中被读取,因为 cookie 已被加密。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网