cookie,seesion学习
一,为什么需要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学习的更多相关文章
- Cookie&Seesion会话 共享数据 工作流程 持久化 Servlet三个作用域 会话机制
Day37 Cookie&Seesion会话 1.1.1 什么是cookie 当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息都保存在Cookie中.这样,当该浏览器 ...
- JavaWeb 后端 <四> 之 Cookie HttpSession 学习笔记
一.会话管理概述 1.什么是会话? 好比一次通话.打开浏览器,点击多次链接(发出多次请求和收到多次的响应),关闭浏览器,这个过程就是一次会话. 有功能 可以 文件 新建会话 2.解决的问题是什么? ...
- JavaEE Cookie HttpSession 学习笔记
1. 会话管理概述 1.1 什么是会话 好比一次通话.打开浏览器,点击多次链接(发出多次请求和收到多次的响应),关闭浏览器,这个过程就是一次会话. 有功能 可以 文件 新建会话 1.2 解决的问题是 ...
- Session和Cookie的学习笔记2
<?php /* Cookie在计算机中保存的格式 用户名@网站地址[数字].txt Cookie在文件夹下,每个Cookie文件都是一个简单而又普通的文件件而不是程序,Cookie中的内容大多 ...
- Cookie seesion 赋值
后台赋值: Session["uid"] = userid;//后台 后台取值: Label1.Text = Session["userid"].ToStrin ...
- JavaWeb——Cookie,Session学习汇总
什么是Cookie Cookie的作用 安全性能 Cookie的语法 Cookie注意细节 Cookie实例练习 什么是会话Session Session语法 Session与浏览器窗口的关系 ses ...
- 【JAVAWEB学习笔记】16_session&cookie
会话技术Cookie&Session 学习目标 案例一.记录用户的上次访问时间---cookie 案例二.实现验证码的校验----session 一.会话技术简介 1.存储客户端的状态 由一个 ...
- Cookie学习笔记二:Cookie实例
今天说说刚刚学到的两个Cookie的最经典应用:自己主动登录和购物车设置 一:自己主动登录 须要两个页面:login.jsp与index.jsp,login.jsp用来输出登录信息,index.jsp ...
- jQuery插件之Cookie插件使用方法~
一.介绍 1-1.jQuery.Cookie.js插件是一个轻量级的Cookie管理插件.下载地址:jQuery-cookie.js 有需要的朋友,右键另存为即可! 二.使用方法 2-1.引入jQu ...
随机推荐
- ES6新增关键字let与var的区别
最近看了很多文章,偶然间看到ES6中新增了一个关键字 let ,它具有与 var 关键字相似的功能.一开始使用它时,发现它让我对之前一些习以为常的东西产生了怀疑. 下面先让我们看看它和 var 之间用 ...
- ASE Alpha Sprint - backend scrum 4
本次scrum于2019.11.8再sky garden进行,持续10分钟. 参与人: Zhikai Chen, Jia Ning, Hao Wang 请假: Xin Kang, Lihao Ran, ...
- 2019-9-2-win10-uwp-标题栏
title author date CreateTime categories win10 uwp 标题栏 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 17 ...
- 天启android5.1系统无法在非1650批次号的rk3288w芯片上启动
天启android5.1系统无法在非1650批次号的rk3288w芯片上启动 挂掉log,说明在rtc初始化后挂掉 [ ) HIGH! ======== [ [ [ 1.420258] [WLAN_R ...
- MySQL--15 MHA简介
目录 一.MHA简介 二.工作流程 三.MHA架构图 四.MHA工具介绍 五.基于GTID的主从复制 六.部署MHA 一.MHA简介 松信嘉範: MySQL/Linux专家 2001年索尼公司入职 ...
- HDU4089/Uva1498 Activation 概率DP(好题)
题意:Tomato要在服务器上激活一个游戏,一开始服务器序列中有N个人,他排在第M位,每次服务器会对序列中第一位的玩家进行激活,有四种结果: 1.有p1的概率会激活失败,这时候序列的状态是不变的.2. ...
- django学习笔记--数据库中的多表操作
1.Django数据库----多表的新增操作 1.一对一模式下新增 创建一个详情对象,把这个对象赋值给创建的新的user对象 author_detail = models.AuthorDetail.o ...
- axis2获取request方法
修改axis2的请求url-pattern 找到axis2-kernel jar包中axis2.xml配置文件的servicePath配置项,修改成与url-pattern一样的值,这样就改变了请求的 ...
- 外包项目测试工作量评估指南&外包项目测试验收流程
## ### 外包项目测试工作量评估指南 1.目的 编写本指导书的目的旨在为我公司进行测试外包服务工作进行指导,帮助项目经理和相关人员编写测试方案.评估工作量.制定测试计划和测试策略等, ...
- boost graph
Boost Graph provides tools to work with graphs. Graphas are two-dimensional point clouds with any nu ...