Как этот сайт знает, что я открываю еще одну вкладку?

Когда я вхожу на сайт, который является "системой обучения" в моем университете, я обнаружил, что я не могу открыть новую вкладку с открытым сайтом. Когда я это сделаю, каким-то образом сайт узнает и отобразит следующее сообщение?

Session already running?

Как на самом деле сайт знает, какие вкладки я открываю на своем компьютере? Насколько мне известно, интерфейсный код не должен иметь доступа к моей личной информации о браузере. Какую доступную информацию мог бы использовать этот сайт, чтобы определить, что у меня уже есть другая вкладка?

Я обращаюсь к сайту с помощью частного компьютера, а доступ к сайту не входит в локальную сеть, к нему обращаются через Интернет. Поэтому нет внутреннего программного обеспечения для мониторинга, которое могло бы вызвать это. Я использую Google Chrome 24 Beta для Mac.

Ответ 1

Один из способов сделать это - через файлы cookie и идентификаторы. Во-первых, вы зашли на сайт и провели там сеанс. Это управляется с помощью файлов cookie; всякий раз, когда вы посещаете страницу на сайте, ваш браузер отправляет файл cookie, который обычно содержит какой-то идентификатор. Таким образом, сервер может идентифицировать любой запрос, исходящий от вас, действительно от вас. Итак, в этом случае как исходная вкладка, так и ваша новая вкладка отправят тот же файл cookie.

Во-вторых, он может также добавить другой, другой идентификатор (назовите его идентификатор страницы), любой ссылке или форме, которые вы отправляете на сайт. Таким образом, форма на странице может содержать идентификатор 1234, и любые ссылки также будут содержать этот идентификатор. Каждая новая страница, которую вы посещаете, может содержать новый идентификатор. Поэтому в любой момент сайт знает, что следующий запрос из вашего браузера (указанный куки файлами) должен также содержать этот другой идентификатор. Если вы перемещаетесь по сайту обычным способом, нажимая на ссылки, отправляя формы, это будет правдой, и все будет хорошо.

Случаи, когда ваш следующий запрос НЕ отправил ожидаемый, второй id:

  • вы нажали кнопку "Назад" (вы отправляете старый идентификатор страницы)
  • вы открываете новую вкладку (это зависит от браузера, но если она открывает на той же странице, на которой вы уже находитесь на исходной вкладке, она будет отправлять текущую страницу id, а не идентификатор следующей страницы, который ожидает сервер)

В любом случае вы отправляете запрос с идентификатором страницы, который сервер не ожидает, и он может сделать наилучшее предположение относительно того, что вы сделали.