这个网站如何知道我正在打开另一个标签?

ele*_*119 10 html browser session web

当我登录我所在大学的"学习系统"网站时,我发现无法打开同一网站打开的新标签页.当我这样做时,网站知道并显示以下消息?

会话已在运行?

该网站如何知道我在计算机上打开了哪些标签?据我所知,前端代码不应该访问我的私人浏览器信息.该网站可以使用哪些可访问的信息来确定我已经打开了另一个标签?

我使用私人计算机访问该站点,并且正在访问的站点不在本地网络上,而是通过Internet访问.因此,没有可能导致此问题的内部监控软件.我正在使用Google Chrome 24 Beta for Mac.

mat*_*ake 5

一种方法是通过 cookie 和 id。首先,您登录到该站点并在那里进行会话。这是使用 cookie 管理的;每当您访问网站上的页面时,您的浏览器都会发送一个通常包含某种 ID 的 cookie。这样服务器就可以识别来自你的任何请求,真的来自你。因此,在这种情况下,您的原始标签和新标签都将发送相同的 cookie。

其次,它还可以向您在站点上提交的任何链接或表单添加另一个不同的 id(称为页面 id)。因此,页面上的表单可能包含 id 1234,并且任何链接也将包含该 id。您访问的每个新页面都可能包含一个新 ID。所以在任何时候,站点都知道来自浏览器的下一个请求(由 cookie 识别)也应该包含这个其他 id。如果您以正常方式浏览网站,点击链接,提交表格,这将是正确的,一切都会好起来的。

您的下一个请求不会提交预期的第二个 ID 的情况是:

  1. 你点击后退按钮(你会发送一个旧的页面 ID)
  2. 您打开一个新选项卡(这取决于浏览器,但如果它打开您在原始选项卡中已经在同一页面上的页面,它将发送当前页面 id,而不是服务器期望的下一个页面 id)

无论哪种方式,您发送一个带有服务器不期望的页面 ID 的请求,它可以对您所做的事情做出最好的猜测。