html - 该站点如何知道我正在打开另一个选项卡?

标签 html session browser web

当我登录到我所在大学的“学习系统”网站时,我发现我无法在打开同一网站的情况下打开新标签页。当我这样做时,网站会以某种方式知道并显示以下消息?

Session already running?

网站到底是怎么知道我在电脑上打开了哪些标签页的?据我所知,前端代码不应该访问我的私有(private)浏览器信息。该网站可以使用哪些可访问信息来确定我已经打开了另一个标签页?

我正在使用私有(private)计算机访问该站点,而正在访问的站点不在本地网络上,而是通过 Internet 访问的。因此,没有可能导致这种情况的内部监控软件。我正在使用适用于 Mac 的 Google Chrome 24 Beta。

最佳答案

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

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

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

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

无论哪种方式,您发送的请求都带有服务器不期望的页面 ID,并且它可以对您的操作做出最佳猜测。

关于html - 该站点如何知道我正在打开另一个选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455304/

相关文章:

html - 将图像转换为 HTML/CSS - 无法获得正确的渐变

php - 如何检查用户是否通过 Laravel 上的 cookie session 进行身份验证?

javascript - 找到安装的插件?

javascript - 本地存储不改变值

javascript - 如何从文本框中获取文本并进行比较?

spring - Spring session 范围 Controller 中的 transient 字段

debugging - Chrome 中为 "This webpage has a redirect loop",但在 FF 和 IE 上工作正常?

html - 如何清除 html 页面的缓存?

android - 三星银河 2 中的 CSS 兼容性

javascript - 使用 Express Sessions 的 Node.js 非常基本的本地身份验证