大兴企业官网网站建设咨询,做交互式的网站怎么做,阿里巴巴网站建设的背景,沙井做网站公司本文转自#xff1a;http://www.cnblogs.com/japanbbq/archive/2011/08/31/2160494.html Session: Session是“会话”的意思#xff0c;然而#xff0c;因为http协议是无状态的#xff0c;那么每次客户端请求服务器端#xff0c;服务器端都会以“崭新”的页面展示给客户端…本文转自http://www.cnblogs.com/japanbbq/archive/2011/08/31/2160494.html Session: Session是“会话”的意思然而因为http协议是无状态的那么每次客户端请求服务器端服务器端都会以“崭新”的页面展示给客户端这在静态的html页面中是不会存在任何影响但是在动态页面中需要与用户交互要保持与客户端用户的联系则需要一些东西来保持而Session的话则是具有“保持状态保持会话”的能力。 注意的是Session是保存在服务器端的。Cookie是保存在客户端的需要注意的是如果用户突然关闭了客户端页面那么Session就会丢失即“会话丢失”。 服务器端创建session的三个步骤网上参考 1. 生成全局唯一标识符sessionid 2. 开辟数据存储空间。一般会在内存中创建相应的数据结构但这种情况下系统一旦掉电所有的会话数据就会丢失如果是电子商务网站这种事故会造成严重的后果。不过也可以写到文件里甚至存储在数据库中这样虽然会增加I/O开销但session可以实现某种程度的持久化而且更有利于session的共享 3. 将session的全局唯一标示符发送给客户端。 问题的关键就在服务端如何发送这个session的唯一标识上。联系到HTTP协议数据无非可以放到请求行、头域或Body里基于此一般来说会有两种常用的方式cookie和URL重写。 1. Cookiesessionid会保存在Cookie里并且失效时间为0就是浏览器进程的有效时间如果关闭了浏览器那么session就会失效原理就是如此 读者应该想到了对服务端只要设置Set-cookie头就可以将session的标识符传送到客户端而客户端此后的每一次请求都会带上这个标识符由于cookie可以设置失效时间所以一般包含session信息的cookie会设置失效时间为0即浏览器进程有效时间。至于浏览器怎么处理这个0每个浏览器都有自己的方案但差别都不会太大一般体现在新建浏览器窗口的时候 2. URL重写平时网上url地址上有 ?sessionIDxxxx 字样 所谓URL重写顾名思义就是重写URL。试想在返回用户请求的页面之前将页面内所有的URL后面全部以get参数的方式加上session标识符或者加在path info部分等等这样用户在收到响应之后无论点击哪个链接或提交表单都会在再带上session的标识符从而就实现了会话的保持。读者可能会觉得这种做法比较麻烦确实是这样但是如果客户端禁用了cookie的话URL重写将会是首选。 Session在ASP.Net的基本用法 定义的时候 Session[ddd]xxxx; 使用的时候Session[ddd]即可 如果需要保存类的对象的话用法跟ViewState是一样的 发送端 UserInfo ui new UserInfo(); Session[ui] ui; ui.name name.Text; ui.age age.Text; ui.sex sex.Text; ui.password password.Text; Response.Redirect(a.aspx); 接收端 UserInfo ui Session[ui] as UserInfo; name.Text ui.name; age.Text ui.age; password.Text ui.password; sex.Text ui.sex; Session时间销毁方式超时和手动销毁 asp.net Session的默认时间设置是20分钟即超过20分钟后,服务器会自动放弃Session信息. Session Hijack 网上参考 Session hijack即会话劫持是一种比较严重的安全威胁也是一种广泛存在的威胁在session技术中客户端和服务端通过传送session的标识符来维护会话但这个标识符很容易就能被嗅探到从而被其他人利用这属于一种中间人攻击。 Cookie cookie的最大好处使用的就是Remember Me的服务。 cookie保存在客户端如果用户禁用了cookie的话可能会存在一些问题所以在设计的时候要注意判断cookie是否为null 需要cookie的原因跟需要session一样因为http协议是无状态的每次都是新的页面不会保存任何信息而cookie的话会保存在客户端的电脑上那么到时需要用的时候可以利用后台的服务器端调用也可以就用客户端来进行调用。 Cookie只是一段文本所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器所以应该保证它不要太大。 Cookie的内容也是明文保存的有些浏览器提供界面修改所以 不适合保存重要的或者涉及隐私的内容。网上参考 Cookie的限制 大多数浏览器支持最大为 4096 字节的 Cookie。由于这限制了 Cookie 的大小最好用 Cookie 来存储少量数据或者存储用户 ID 之类的标识符。用户 ID 随后便可用于标识用户以及从数据库或其他数据源中读取用户信息。 浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量。大多数浏览器只允许每个站点存储 20 个 Cookie如果试图存储更多 Cookie则最旧的 Cookie 便会被丢弃。有些浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制通常为 300 个。 Cookie中的属性网上参考 name: 每个cookie由一个唯一的名称代表这个名称可以包含字母、数字、下划线。cookie的名称是不分大小写所以mycookie和MyCookie是一样。但考虑到服务器端语言可能区分大小写建议定义和使用时还是区分大小写。 value: 保存在cookie中的字符串值。这个值在存储之前必须使用encodeURIComponent()对其进行编码以免丢失数据或占用了cookie。注意cookie名字和值加起来的字节数不能超过4095字节也即4KB。 domain: 出于安全考虑网站不能访问由其他域所创建的cookie。创建cookie以后域的信息会作为cookie的一部分存储下来。关于域这里给一个例子如http://ibm.com/foo/index.aspx, 它的域为ibm.com。 path: cookie的另一个安全特征限制对web服务器上特定目录的访问。即控制哪些访问能触发发送.例如请求的地址是上面的url,如果path/foo,这个cookie就会被发送,但是path为其他的话,该cookie会被忽略。 expires: cookie的过期时间。 secure: 一个true/false值用于表示cookie是否只能从安全网站使用SSL和https协议的网站中访问。如果这个值被设置为true Cookie的基本步骤网上参考 浏览器对于Web服务器应答包头中Cookie的操作步骤 a. 从Web服务器的应答包头中提取所有的cookie。 b. 解析这些cookie的组成部分名称值路径等等。 c. 判定主机是否允许设置这些cookie。允许的话则把这些cookie存储在本地。 浏览器对Web服务器请求包头中所有的cookie进行筛选的步骤 a. 根据请求的url和本地存储cookie的属性判断那些cookie能被发送给Web服务器。 b. 对于多个cookie判定发送的顺序。 c. 把需要发送的cookie加入到请求http包头中一起发送。 Cookie在ASP.Net中的基本用法 发送端 HttpCookie cookie new HttpCookie(UserInfo); cookie[name] name.Text; cookie[age] age.Text; cookie[sex] sex.Text; cookie[language] language.Text; cookie.Expires DateTime.MaxValue; Response.Cookies.Add(cookie); Response.Redirect(cookie2.aspx); 接收端 HttpCookie cookie Request.Cookies[UserInfo]; if(cookie!null) { name.Text cookie[name]; age.Text cookie[age]; language.Text cookie[language]; sex.Text cookie[sex]; } else { } 最好在接收端上加上一个条件判断这样则避免如果禁用了cookie就不会导致出错也可以确定cookie是否存在。 Cookie的用途 防止网上重复投票 通过cookie实现自动登陆 单点登陆 ( Single Sign On, SSO)是目前比较流行的企业业务整合的解决方案之一. 简单的说, 就是在多个应用系统中用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。 Session和Cookie比较网上参考 1. 应用场景 Cookie的典型应用场景是Remember Me服务即用户的账户信息通过cookie的形式保存在客户端当用户再次请求匹配的URL的时候账户信息会被传送到服务端交由相应的程序完成自动登录等功能。当然也可以保存一些客户端信息比如页面布局以及搜索历史等等。 Session的典型应用场景是用户登录某网站之后将其登录信息放入session在以后的每次请求中查询相应的登录信息以确保该用户合法。当然还是有购物车等等经典场景 2. 安全性 cookie将信息保存在客户端如果不进行加密的话无疑会暴露一些隐私信息安全性很差一般情况下敏感信息是经过加密后存储在cookie中但很容易就会被窃取。而session只会将信息存储在服务端如果存储在文件或数据库中也有被窃取的可能只是可能性比cookie小了太多。 Session安全性方面比较突出的是存在会话劫持的问题这是一种安全威胁这在下文会进行更详细的说明。总体来讲session的安全性要高于cookie 3. 性能 Cookie存储在客户端消耗的是客户端的I/O和内存而session存储在服务端消耗的是服务端的资源。但是session对服务器造成的压力比较集中而cookie很好地分散了资源消耗就这点来说cookie是要优于session的 4. 时效性 Cookie可以通过设置有效期使其较长时间内存在于客户端而session一般只有比较短的有效期用户主动销毁session或关闭浏览器后引发超时 5. 其他 Cookie的处理在开发中没有session方便。而且cookie在客户端是有数量和大小的限制的而session的大小却只以硬件为限制能存储的数据无疑大了太多。 关于Session和Cookie两方面的知识还有太多太多要学现在理解只是皮毛。 网上资源来自 http://www.cnblogs.com/shoru/archive/2010/02/19/1669395.html 大话session http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html 细说cookie http://www.cnblogs.com/langzi127/archive/2009/04/08/1431730.html cookie的应用 转载于:https://www.cnblogs.com/freeliver54/p/5909611.html