Как вы правильно сказали, HTTP сам по себе не имеет состояния, и каждый запрос технически отделен от любого другого. Сессии, используемые веб-сайтами, являются обходным путем для этого. Обычно происходит то, что сервер сохраняет любую информацию, которую он хочет сохранить между запросами (например, имя пользователя и / или идентификатор вошедшего в систему пользователя), и назначает этой информации идентификатор (называемый «идентификатором сеанса»). Затем он сообщает браузеру идентификатор сеанса таким образом, чтобы браузер мог вернуть идентификатор, когда пришло время сделать другой запрос. Если браузер играет свою роль и предоставляет идентификатор сеанса, сохраненную информацию можно извлекать, обновлять и т. Д. С каждым запросом, обеспечивая некоторую степень состояния даже по протоколу без сохранения состояния.
Сеансы обычно реализуются с использованием файлов cookie. Таким образом, сервер передает браузеру файл cookie с идентификатором сеанса, а браузер возвращает этот же файл cookie при каждом запросе до тех пор, пока не истечет срок действия файла cookie или он не будет забыт иным образом. Некоторые файлы cookie (так называемые «сеансовые файлы cookie») не сохраняются и забываются при закрытии браузера. В недавно открытом браузере нет файлов cookie сеанса для передачи, поэтому, если сервер использует файлы cookie сеанса для выполнения сеансов (что и должно быть), он будет считать пользователя, еще не вошедшего в систему, и перенаправит его на страницу входа, если ему потребуется войти в систему.
Сеансовые cookie-файлы обычно будут передаваться между вкладками в одном и том же браузере, а иногда даже будут передаваться в окна, открываемые «Файл> Новое окно» из уже запущенного браузера, поскольку оба этих случая обычно просто являются частью этот браузер. Но если вы запускаете браузер из меню «Пуск» или ваша ОС позволяет вам запустить программу, это совсем другой процесс - и сеансовые куки-файлы редко распределяются между процессами.
Сервер обычно также запоминает сеансы по окончании только в течение ограниченного времени (от нескольких секунд до лет, в зависимости от настроек сервера и / или сайта) после каждого запроса, использующего сеанс. Если браузер передает файл cookie, соответствующий сеансу, который сервер больше не запоминает, он будет действовать так, как если бы сеанса вообще не было. Который, в случаях, когда вы должны войти в систему, снова перейдет на страницу входа.