一,为什么需要cookie和session?

1,Web应用程序是使用HTTP协议传输数据的。然而HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。所以要跟踪该会话,必须引入一种机制。

2,Cookie和 Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决 HTTP无状态的问题

二,cookie实现:

1,cookie实际上是由 Web 服务器保存在用户浏览器上的小文本文件

2,客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来(用小文本文件将资料记录下来)。

3,当浏览器再请求同一个网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

实现和查看代码:

Cookie类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Http;
using System.Web; namespace Common
{
public class Cookie
{
/// <summary>
/// 无设置时间的cookie,如不设置时间,cookie的有效期为浏览器关闭的时候自动失效
/// </summary>
/// <param name="CookieName">标识</param>
/// <param name="CookieValue">值</param>
/// <returns></returns>
public bool setCookieNoTime(string CookieName, string CookieValue)
{
try
{
HttpCookie cookie = new HttpCookie(CookieName);
//cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
cookie.Value = CookieValue;
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
return true;
}
catch
{
return false;
}
} /// <summary>
/// Cookies赋值
/// </summary>
/// <param name="CookieName">标识</param>
/// <param name="CookieValue">值</param>
/// <param name="CookieDay">有效天数</param>
/// <returns></returns>
public bool setCookie(string CookieName, string CookieValue, int CookieDay)
{
try
{
HttpCookie cookie = new HttpCookie(CookieName);
//cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
cookie.Expires = DateTime.Now.AddDays(CookieDay);
cookie.Value = CookieValue;
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
return true;
}
catch
{
return false;
}
} /// <summary>
/// 读取Cookies
/// </summary>
/// <param name="CookieName">标识</param>
/// <returns></returns>
public string getCookie(string CookieName)
{
HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies[CookieName];
if (cookie != null)
{
return cookie.Value.ToString();
}
else
{
return null;
}
} /// <summary>
/// 删除Cookies
/// </summary>
/// <param name="CookieName">标识</param>
/// <returns></returns>
public bool delCookie(string CookieName)
{
try
{
HttpCookie cookie = new HttpCookie(CookieName);
//cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
cookie.Expires = DateTime.Now.AddDays(-);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
return true;
}
catch
{
return false;
}
}
}
}

实现页面:

            Cookie c = new Cookie();
c.delCookie("");
c.setCookieNoTime("no","no");
c.setCookie("", "", );
<script type="text/javascript">
window.onload = function () {
//alert(document.cookie);
document.getElementById("cookie").innerHTML = document.cookie;
}
</script>
<div id="cookie">
</div>

以上方法可以在页面输出浏览器的Cookie,也正是这个原因cookie的使用时不安全的,所以在使用cookie的情况下一般会有以下几种方式:

1,设置到密码时都需要加入时间戳加密,以至于每次密文都不一样

2,客户端请求时,每次或定时更新 Cookie 内容

3,每次向 Cookie 写入时间戳,数据库需要记录最后一次时间戳

4,客户端提交 Cookie 时,先解密然后校验时间戳,时间戳若小于数据数据库中记录,即意味发生攻击。

三,session的实现:

1,Session对象是在客户端第一次请求服务器的时候创建并且当session第一次被启用时,一个唯一的标识被存储于本地的cookie中。(也就是session保存在服务器中,而不是客户端)

2,Session保存在服务器端。为了获得更高的存取速度,服务器把Session放在内存里。每个客户端都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。

3,Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。客户端每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。
4,由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

5,新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。而在同一个客户端的不同浏览器之间打开同一个网站也会在服务器有各自不同的session

储存代码:

Session["lable"] = "";

使用session代码:

 string str = Session["lable"].ToString();

cookie,seesion学习的更多相关文章

  1. Cookie&Seesion会话 共享数据 工作流程 持久化 Servlet三个作用域 会话机制

    Day37 Cookie&Seesion会话 1.1.1 什么是cookie 当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息都保存在Cookie中.这样,当该浏览器 ...

  2. JavaWeb 后端 <四> 之 Cookie HttpSession 学习笔记

    一.会话管理概述 1.什么是会话? 好比一次通话.打开浏览器,点击多次链接(发出多次请求和收到多次的响应),关闭浏览器,这个过程就是一次会话. 有功能 可以  文件 新建会话 2.解决的问题是什么? ...

  3. JavaEE Cookie HttpSession 学习笔记

    1. 会话管理概述 1.1 什么是会话 好比一次通话.打开浏览器,点击多次链接(发出多次请求和收到多次的响应),关闭浏览器,这个过程就是一次会话. 有功能 可以  文件 新建会话 1.2 解决的问题是 ...

  4. Session和Cookie的学习笔记2

    <?php /* Cookie在计算机中保存的格式 用户名@网站地址[数字].txt Cookie在文件夹下,每个Cookie文件都是一个简单而又普通的文件件而不是程序,Cookie中的内容大多 ...

  5. Cookie seesion 赋值

    后台赋值: Session["uid"] = userid;//后台 后台取值: Label1.Text = Session["userid"].ToStrin ...

  6. JavaWeb——Cookie,Session学习汇总

    什么是Cookie Cookie的作用 安全性能 Cookie的语法 Cookie注意细节 Cookie实例练习 什么是会话Session Session语法 Session与浏览器窗口的关系 ses ...

  7. 【JAVAWEB学习笔记】16_session&cookie

    会话技术Cookie&Session 学习目标 案例一.记录用户的上次访问时间---cookie 案例二.实现验证码的校验----session 一.会话技术简介 1.存储客户端的状态 由一个 ...

  8. Cookie学习笔记二:Cookie实例

    今天说说刚刚学到的两个Cookie的最经典应用:自己主动登录和购物车设置 一:自己主动登录 须要两个页面:login.jsp与index.jsp,login.jsp用来输出登录信息,index.jsp ...

  9. jQuery插件之Cookie插件使用方法~

    一.介绍 1-1.jQuery.Cookie.js插件是一个轻量级的Cookie管理插件.下载地址:jQuery-cookie.js  有需要的朋友,右键另存为即可! 二.使用方法 2-1.引入jQu ...

随机推荐

  1. 靶场练习--sqli(3&4)

    第三关 先解决一下第二关遗留下来的问题,嘻嘻.看来数据库原理应当过一遍~ 1.首先判断是否有SQL注入,然后再看是数字型.字符型.发现这里是字符型. 2.order by 查询字段数,记得后面要加一个 ...

  2. Shell 脚本举例

  3. Sass-@each

    @each 循环就是去遍历一个列表,然后从列表中取出对应的值. @each 循环指令的形式: @each $var in <list> 如果你没有接触过列表,也不要紧,他也非常简单. 在下 ...

  4. ElasticSearch java api -单例模式

    //单例模式 private static Settings getSettingInstance(){ if(settings==null){ synchronized (Settings.clas ...

  5. 13.以太坊中web3访问合约账户出现问题——2019年09月29日

    title: 合约交互时发现访问不了地址的bug date: "2019-09-29 10:17:16" tags: Dapp开发 categories: 技术驿站 在编写合约交互 ...

  6. QtCreator/lib/qtcreator/plugins/libHelp.so: 无法加载库

    解决方法: 终端命令:sudo apt-get install libqt4-dev sudo apt-get install libgstreamer0.10-dev sudo apt-get in ...

  7. NET Core SDK 已安装在VS2017不可见

    本地装了6个版本的net core sdk,但是在vs2017,vs2019 只是显示1.0和1.1: 重装,重启了好几遍也没用,没想到是环境变量PATH顺序问题,将x64的放在x86前,就OK了~:

  8. js 自定义map

    <script> function HashMap(){this.map = {};} HashMap.prototype = { put : function(key, value){ ...

  9. 4412 移植mpu9250尝试

    4412的板子IO都是1.8v的.只有I2C6是用了电平转换到了3.3v.所以我准备使用I2C6来驱动mpu9250 一.首先去掉占用的模块 menuconfig中去掉触摸的驱动 Device Dri ...

  10. opencc模块用langconv替换

    将一下两个py下载并放入代码目录:https://raw.githubusercontent.com/skydark/nstools/master/zhtools/langconv.py https: ...