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 ...
随机推荐
- pass value from shell to sql
echo 'please enter new userid need create' read new_usr echo 'please enter userid to model' read mod ...
- Sass-@each
@each 循环就是去遍历一个列表,然后从列表中取出对应的值. @each 循环指令的形式: @each $var in <list> 如果你没有接触过列表,也不要紧,他也非常简单. 在下 ...
- CF 36E Two Paths
传送门 真实的自闭= =+ 考试的时候老师明明说了可以路径为空T^T 然后光荣的挂掉了 20分的链[明明是最送分的] 上来就看出来欧拉回路了嘛 然后思考了一下大概奇点配个对 删一条简单路径剩下的跑欧拉 ...
- python tkinter开始
tkinter是python自带的GUI库,所以用起来会比较简单 运行一个什么都没有的窗口 import tkinter window=tkinter.Tk()#窗口类定义 window.mainlo ...
- hive之压缩
对数据进行压缩可以节约磁盘空间,提高系统吞吐量和性能,但是压缩和解压缩会增加CPU的开销. 1.hive的压缩编/解码器 BZip2和GZip压缩率高,但是需要消耗较多的CPU开销.LZO和Snapp ...
- ExtJS5.0 菜鸟的第一天
1.新项目开始啦,后台用户管理页面涉及到表格数据添加,修改内容比较多.准备用EXTJS框架搞下,对于我这种JS不咋地的人来说,还真是个挑战.整了2天,才搞出一个Hello,world!我也是醉了.. ...
- java使用开源类库Tesseract实现图片识别
Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选. Tess4J则是Tesseract在Java PC上的应用 Tesseract的OCR引擎最先由HP实验 ...
- h5视频做背景的样式
video{ position: fixed; display: block; width: 100%; object-fit:fill; height:100%; right: 0px; botto ...
- [CSP-S模拟测试]:platform(后缀数组+二分+线段树)
题目传送门 题目描述 走过奈何桥有一个名叫望乡台的土台,望乡台有个名曰孟婆的老妇人在卖孟婆汤.一生爱恨情仇,一世浮沉得失,都可以随这碗孟婆汤遗忘得干干净净.现在有$n$碗孟婆汤摆成一排,汤的品种不超过 ...
- python接口自动化测试三十六:数据驱动参数化之paramunittest
官方文档1.官方文档地址:https://pypi.python.org/pypi/ParamUnittest/2.github源码下载地址:https://github.com/rik0/Param ...