ajk-pro
Я имею некоторый опыт написания движка сайта, на на php. В php есть некие сессии и через них можно передавать некие данные между страницами сайта. Сессии там хранятся на сервере. Куки естественно у клиента.
Видимо, ты не понимаешь, что такое сессии и зачем их придумали вообще. Сессия - это не что-то там в PHP, питоне, на сервере и так далее. Сессия - это абстракция такая, которая даёт упорядочить пары запрос-ответ в HTTP-протоколе и построить такой направленный непрерывный процесс, для которого изначально в HTTP-протоколе нет средств. И вот для этого сессии реализовали в PHP, питоне и других языках. Поэтому для изучения сессии нужно только взять HTTP-протокол и сессию без какого-либо языка и изучить её суть и её границы. После этого ты начнёшь понимать, что в одном языке сессии реализованы красиво, а в другом языке сессии реализованы как-то по-тупому.
Сессия просто соединяет запросы друг с другом через информацию в HTTP-заголовках. Таким образом клиент знает, что запрос такой-то следует за запросом таким-то и может сообщить серверу “теперь я посылаю следующий запрос по очереди”. А сервер знает, что ответ такой-то следует за ответом таким-то и может сообщить клиенту “теперь я посылаю следующий ответ по очереди”. Таким образом эта непрерывная цепочка запросов-ответов объединяется в сессию. Между ними могут происходить другие запросы-ответы, но они не будут замешиваться в эту сессию, потому что в них не будет признаков этой сессии. Так ты можешь участвовать в нескольких сессиях параллельно, запросы и ответы у них могут быть перемешаны во времени как угодно и следовать в каком угодно порядке, но как на клиенте, так и на сервере эти запросы и ответы будут разноситься по своим сессиям, которые строго упорядочены и в которых нет лишних запросов или лишних ответов, не относящихся к этим сессиям. Всё это придумано для того, чтобы создать упорядоченности, которых в HTTP-протоколе изначально нет.
Дальше уже возникают вопросы реализации сессии: а как её хранить на сервере, в чём; а как сделать так, чтобы никто чужой не влез не в свою сессию, как-то её зашифровать надо, засекретить; а что можно передавать внутри сессий, какие-то капсулы с данными, как их построить. Это всё идёт уже после понятия сессии и может быть выполнено и реализовано по-разному. И эта реализация зависит как от ума дизайнеров и их дальновидности и знаний в области безопасности, так и от возможностей языка, в котором это реализовывается, потому что языки тоже могут быть сделаны не очень подходяще для своего развития. Поэтому в PHP, например, ты и наблюдаешь часто какие-то неродные, обходные моменты, по которым видно, что их туда всунули так, чтобы лишь бы работало.
tags: http session