用户在浏览器中进行如下操作会在服务器端开几个Session?

clarck_913 2009-06-29 10:47:19
加精
以IE7为例

用户打开浏览器是在服务器上开了一个Session

如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session?

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session?

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session?

如果不是IE7而是IE8呢?IE6(当然,IE6没有选项卡)呢?

如果浏览器是 FF或者TT或者Opera或者safari呢?

后台开的Session个数都是一样的吗?

谢谢大家
...全文
1329 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjian_666 2012-09-08
  • 打赏
  • 举报
回复
session 是对于一个用户 一个浏览器来说的
qq344346702 2012-09-04
  • 打赏
  • 举报
回复
一般说SESSION 进程 是你在打开浏览器是在服务器端自动生成的而在你没有关闭次浏览器时又打开别的浏览器则再次在别的服务器生成一个SESSION ,还有SESSION 会在一段时间都释放也就是失效,这就要看源代码是怎么设计的了,在你没关闭窗口之前永远都是一个SESSION ,或者SESSION 失效(在服务器端设置的SESSION 有效时间到时)
足舞天下 2012-08-31
  • 打赏
  • 举报
回复
up!!! 受用了。
sebatinsky 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 clarck_913 的帖子:]
以IE7为例

用户打开浏览器是在服务器上开了一个Session

如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session?

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session?

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session?

如果不是IE7而是IE8呢?IE6(当然,IE6没有选项卡)呢?

如果浏览…
[/Quote]
看了上面的很多评论,说实话,不敢乱说,因为最近在做FLEX的项目,似乎有一个Session共用原则,也就是你用登陆页面正常登陆之后,然后用Flex打开之后,Session还保存着,能够获取数据,不管开的是哪个浏览器,都可以,我想这个就是保存在缓冲中的,当然,这个没有仔细研究过,不过我想,--这里要指定的是什么样的Session,
这里引用一下...



对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。
但还是讲讲,别嫌老~

有一些人赞成用SESSION,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法

如果有错误请不要朝丢东西,金条和硬币除外。

有些人应该知道我是做江湖程序的,而江湖程序做看中的就是效率,但这里不谈设计,而

从一些比较实际的角度看SESSION。

首先要先说SESSION是干什么的,SESSION是可以存储针对与某一个用户的IE以及通过其当

前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边

先研究SESSION是如何启动的,当打开IE以后浏览网站后会发出一个指令请求SESSIONID以

及对各个类型数据的下载许可,如图片,声音以及FLASH。
数据实际传输内容:IE到服务器
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language0: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: www.jh521.com
Connection: Keep-Alive
服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储

并同时返回相关页面的下载数据,如下:服务器到IE
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 30 Nov 2003 16:41:51 GMT
Content-Length: 21174..Content-Type: text/html
Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/
Cache-control: private
然后就是页面HTML代码

此时这个IE程序(不是客户机)的SESSIONID就为IBOMFONAOJFEEBHBPIENJFFC

而当IE在访问任何这个站点的ASP程序的时候,就会把IBOMFONAOJFEEBHBPIENJFFC发送

给服务器,服务器就会知道IBOMFONAOJFEEBHBPIENJFFC是表示你
而在服务器上设置SESSION("name")="name"
完全可以看成是
SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name"
或者
SESSION(SESSIONID)("name")="name"
这样,SESSION就区分开用户了。
而当服务器反馈这个ID的时候会看这个ID有没有被使用。如果有在换一个
反正不会让你重复,如果想模拟某人的SESSION的ID来进行欺骗是可以的。不过要获取到

对方IE传输信号,并且在保证当时这个SESSIONID没有被取消的情况下才可能实施。

不过要是我有那时间直接通过POST信号找他NAME和PASS了。我可不费这个劲

想必一些人明白了了SESSIONID到底是如何工作的

那么就在看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来讲他们不属于同类

但是属于一种工作模式,用户和服务器传输私有数据

当我设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并

存放,在特定的时候会取得这个这个信息如在访问这个站点并且COOKID有效的时候。

那么为什么要用COOKIE而不用SESSION呢
看下区别

有效时间以及存储方式 传输内容
COOKIE 可设置并在本地保留 明码信息

SESSION 在IE不关闭并服务器不超时 只有SESSIONID

当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE,

因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前)

而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录

在下次登入的时候会请求新的SESSIONID

而服务器想通过用户个人变量校验用户的状态的时候,就不能用COOKIE

如果用设置用户权限是USER。而IE访问的时候就把USER的明码传输到服务器。

那么如果我通过一定手段,比如直接修改COOKIE记录,把USER修改成ADMIN呢~~

就麻烦了。

但存储用户名和密码或者网站的配色方案这样的信息,用COOKIE是最好的


好,有点累了,在说说这个东西
Request.ServerVariables("HTTP_REFERER")

我想有一些人通过这个Request.ServerVariables("HTTP_REFERER")
来进行一些关键性限制,特别是对付远程提交以及非法侵入。
那么我就要提醒下服务器取得的HTTP_REFERER信息完全是IE传输给服务器的,可以模拟
而且难度不大,用不到半个小时就可以用VB做出一个针对HTTP_REFERER入侵程序。
ffqq58 2009-06-30
  • 打赏
  • 举报
回复
今天刚好看到了这方面的知识,在学习的同时也得到了新发现,谢谢你...9527!
哈哈……
ZhaoHuiZiXin 2009-06-30
  • 打赏
  • 举报
回复
以IE7为例

用户打开浏览器是在服务器上开了一个Session

如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session? 开启新的session

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session? 同一个session

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session? 同一个session

如果不是IE7而是IE8呢?IE6(当然,IE6没有选项卡)呢? 与选新卡没有关系吧

如果浏览器是 FF或者TT或者Opera或者safari呢?

后台开的Session个数都是一样的吗?

谢谢大家
  • 打赏
  • 举报
回复
你自己把 Session ID 输出来看一下就知道了

多标签浏览器肯定是共享一个 Session 的,这是浏览器做的工作。

至于开多个浏览器的话,可能每个浏览器的处理方式不一样,需要测试一下。
BearKin 2009-06-30
  • 打赏
  • 举报
回复
而且 通过有SESSION的浏览器 重新打开个浏览器 新的浏览器有没有SESSION呢?
BearKin 2009-06-30
  • 打赏
  • 举报
回复
在学习 不过 谁可以彻底的总结下 现在的矛盾是 多个浏览器是否共享SESSION? 多个选项卡呢?
dhgdmw 2009-06-30
  • 打赏
  • 举报
回复
mark
humiao8 2009-06-30
  • 打赏
  • 举报
回复
长见识了~~~呵呵~~~
abnert 2009-06-30
  • 打赏
  • 举报
回复
我用ie和firefox可以同时登陆2个校内账号而不影响.
华亭真人 2009-06-30
  • 打赏
  • 举报
回复
一个进程一个SESSION 子进程(超链接)除外
liang8305 2009-06-30
  • 打赏
  • 举报
回复
顶19楼

关键在于cookie是否在多个浏览器进程共享;

如果共享,不管你开多少个浏览器,都是一个session

不共享,就一个浏览器对应一个session;

同一个浏览器进程,也就是一个浏览器里的多个选项卡都是同一个session
合金猫 2009-06-30
  • 打赏
  • 举报
回复
长知识了
gggdwdn 2009-06-30
  • 打赏
  • 举报
回复
学习了
meander 2009-06-30
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
好帖子,学习了
owenxin26 2009-06-30
  • 打赏
  • 举报
回复
一般情况下都是一个浏览器一个Session,比如你同时开IE,FIrefox,Chrome三个浏览器访问网站,那么针对你这同一个用户网站会有3个session开放。
Session默认情况下是以cookie内存储的sessionId作为识别标志,而cookie在浏览器之间独立的。
所以如果是同一个浏览器不管开多少个窗口,都只有一个Session
xuexijava 2009-06-30
  • 打赏
  • 举报
回复
up
加载更多回复(23)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧