Http状态的传递和保存 之 Cookie

Cookie

Cookie是存储在客户端的。

如果想自由的传递和读取,用Cookie。

       Cookie是和站点相关的,也就是只有存储Cookie的服务器站点才能读取和访问。并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点相关的Cookie提交到服务器,并且将服务器端返回的Cookie更新回本地数据库,
 

       因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器就把拿到的Cookie值更新本地浏览器的Cookie就可以。看报文。
    
    在服务器端控制Cookie案例,实现记住用户名的功能:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication4.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="submit" name="write" value="写入Cookie" />
        <input type="submit" name="read" value="读取Cookie" />
        <p>
            Cookie的值是:<%=strCookie%>
        </p>
    </div>
    </form>
</body>
</html>


public partial class Default : System.Web.UI.Page
    {
        public string strCookie = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            string read = Request["read"];
            string write = Request["write"];
            // 写入Cookie操作
            if (!string.IsNullOrEmpty(write))
            {
                string username = "admin";
                // 将Cookie写入到响应。
                Response.SetCookie(new HttpCookie("UserName", username));
            }  // 从Cookie读取值
            else if (!string.IsNullOrEmpty(read))
            {
                // 从客户端请求中读取Cookie
                HttpCookie cookie = Request.Cookies["UserName"];
                if (cookie != null)
                {
                    strCookie = cookie.Value;
                }
            }
        }
    }



设置值的页面:

Response.SetCookie(new HttpCookie("UserName",username));


设置的Cookie值会随着响应报文头一起发送到浏览器(客户端)。


读取值的页面:

username=Request.Cookies["UserName"].Value;


浏览器在请求服务器时,会自动把设置的Cookie随着请求报文头发送到服务器端

服务器端可以从请求报文头中读取到浏览器保存的Cookie值




如果不设定Expires那么生命周期则是关闭浏览器则终止,否则”最多“到Expires的时候终止。

HttpCookie cookie = new HttpCookie("UserName", username);
                // 设置Cookie的过期时间,默认为浏览器的关闭时间。
                cookie.Expires = DateTime.Now.AddDays(1);
                // 将Cookie写入到响应。
                Response.SetCookie(cookie);


Cookie的缺点:
    还不能存储过多的信息,机密信息不能存。
    Cookie无法跨不同的浏览器。
    Cookie是可以被清除的,不能把不能丢的数据存到Cookie中;
    Cookie尺寸有限制,一般就是几K,几百K。


不能把不能丢失的数据存储到Cookie中

只能把可有可无的数据存储到Cookie中,如记住用户名。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
localstorage和cookie都是用来在浏览器端保存数据的技术。但是它们在保存密码方面有一些区别。 首先是localstorage,它是HTML5新增的Web Storage API之一。可以将数据以键值对的形式存储在浏览器中,并且该数据不会随着网页的关闭而消失。因此,localstorage可以用来保存长期登录的密码,以便下次用户打开网页时可以自动填充密码。然而,localstorage存储的数据是明文形式,只要有人能够访问到用户的设备,就可以轻松获取到存储在localstorage中的密码信息。 而cookie是浏览器常用的一种技术,用于在浏览器和服务器之间传递数据。在保存密码方面,cookie可以设置一个标记来表示用户的登录状态,使得用户可以在一段时间内免登录。然而,cookie也存在一些安全问题。首先,cookie中的数据是明文存储的,可以被他人窃取,因此不能将密码明文存储在cookie中,而是应该将密码进行哈希散列等操作后再存储。其次,cookie有过期时间,如果不合理设置,可能会导致用户的登录状态过长,增加了安全风险。 综上所述,无论是使用localstorage还是cookie保存密码,都存在一定的安全风险。为了提升密码的安全性,应该对密码进行哈希散列等操作后再进行存储,并定期更新密码或设置密码的有效期限,以保护用户的账户安全。此外,还应该使用其他更安全的身份验证方式,如双因素认证等,来加强用户账户的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值