cookie文本方式保存在客户端,可以保存很久,即使离线,但安全性不够高,有被破译可能
Session保存在服务器端,只有在线,才可以保持其状态,也可以通过设置时间,来控制长时间不操作的在线用户从服务器上中断它的连接状态。
Session保存在服务器端,只有在线,才可以保持其状态,也可以通过设置时间,来控制长时间不操作的在线用户从服务器上中断它的连接状态。
解决方案 »
- fckeditor 2.6.6的上传问题
- 求asp.net大文件上传组件
- dataRead出来的值能否给一个变量????
- 关于timer_tick事件的一个问题
- 老生常谈,GRIDVIEW和CHECKBOX
- 请问这样的页面是什么原理http://www.test.aspx/rd.html?id=183&type=a&cl=4
- 急!一个url的问题(20分)
- <<<水晶报表>>>关于子报表的问题
- IsClientScriptBlockRegistered和IsStartupScriptRegistered的区别!(很有意义的)
- GridView 按钮隐藏怎么搞得
- INSERT INTO 语句的语法错误,请教
- 用oledb怎么使用oracle中的游标?
cookies 是一小段与用户相关的信息。
cookies 存储时间比session长,给网站相关。如果把背景设置尾保存30天,就可以创建一个TimeSpan对象,表示30天的持续时间。如:
DateTime dt=DateTime.Now;
TimeSpan ts=new TimeSpan(30,0,0,0);
HttpCookie MyCookie=new HttpCookie("Backgroud");
MyCookie.Value=MyDropDownList.SelectedItem.Text;
MyCookie=dt+ts;
Response.Cookies.Add(MyCookie);Session.Clear();清除所有会话。
为这个用户创建的Cookie的名称是ASPSESSIONID。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。
注:如果你对名字是ASPSESSIONID的COOKIE感到好奇,你可以利用ServerVariables集合的COOKIE Header来接受这个信息,参看下面这个脚本:
<%=Request.ServerVariables(“HTTP COOKIE”) %>
你可以刷新不止一次而显示结果依然不变。如果希望对ServerVariables集合有更多了解,那么请去看第14章。
Session变量自己不会存在用户浏览器上。不过,ASPSESSIONID这个cookie需要使用session变量。server使用ASPSESSIONID cookie来将特定的用户和特定的session信息联系起来。没有cookie的话,Server就不会了解到每一个特定用户在网站中移动的信息。
利用SessionID变量存储ASPSESSIONID cookie和直接对名为ASPSESSIONID的cookie赋值有很大不同。微软利用了一个复杂的数学算法对SessionID进行了加密措施,以防止黑客猜测出SessionID的值并且依据这个获得不该获得的身份或权限。
注:你可以用两种方法屏蔽掉SessionID,一种是将全站进行屏蔽,另外一种是将一个单独Active Server Page进行相应屏蔽。
如果想要将整个站点的Session操作进行屏蔽,你可以使用Internet Service Manager。从Application设置对话框,点击Active Server Pages表并且取消对Enable Session State选项的选择。
你还可以在特定的Active Server Page的首行加入使之屏蔽的语句来进行这种操作。
<% EnableSessionState=False %>
由于Session对象使用了Cookies,那么它的兼容性就受到了限制,一些老的浏览器显然是不行的,新的浏览器象是NetScape4.0也提供了屏蔽Cookie的选项。
这样就出了问题、由于Cookie不能适用于所有浏览器,那么在建站时你就必须注意了,如果你的网站定位于大众通用,就必须考虑各种不同的用户情况。不过现在确实有可以替代的方法,有些取代Cookies来进行身份认证的方法将在后面的章节中进行讨论。
注:当前浏览器,是否发送一个Cookie在URL是区分大小写的,因此,微软提醒你最好使用同样的大小写方式,例如一起使用/WWW/mypage.asp和/www/mypage.asp肯定会使浏览器出错。
一 写入Cookie1. Name 和 Value 属性由程序设定,默认值都是空引用。2. Domain属性的默认值为当前URL的域名部分,不管发出这个cookie的页面在哪个目录下的。
例如,http://www.kent.com/application1/login.aspx 页面中发出一个cookie,Domain属性缺省就是www.kent.com ,可以由程序设置此属性为需要的值。3. Path属性的默认值是根目录,即 ”/” ,不管发出这个cookie的页面在哪个目录下的。可以由程序设置为一定的路径来进一步限制此cookie的作用范围。4. Expires 属性,这个属性设置此Cookie 的过期日期和时间。如果没有设置 Cookie 的有效期(默认设置),也可以创建 Cookie,但它不会保存到用户的硬盘上,而是会成为用户会话信息的一部分,关闭浏览器或会话超时这个Cookie即会消失,这种Cookie称作非永久性的 Cookie。存放SessionID的Cookie就是这样的一种Cookie,它不存放在硬盘上,只存在内存之中。5. 将要发出的Cookie附加到Response的Cookies属性中就可以将此Cookie发送到客户端:Reponse.Cookies.Add(Cookie)6. Domain属性+Path属性 相同的所有Cookie 在客户端都存在一个文件中,Cookie之间以”*”分割。每个Cookie的第一行是 Cookie 的名称,第二行是值,第三行是Domain属性+Path属性组成的一个字符串,指示此Cookie的作用域,其余各行则包含 Cookie 的日常处理信息,例如过期日期和时间。Cookie 中还有一个简单的校验和,如果更改 Cookie 名称或值的长度,浏览器就会检测到修改并删除该 Cookie。
Session是将用户的信息记录在服务器端,而Cookie是将信息记录在用户的硬盘上。
如从安全的角度来考虑的话,最好是用Session,
但若从经济的角度来看的话,最好是选用Cookie,因为在服务器的空间是宝贵的。