Изучаю методы передачи данных, и возник такой вопрос: чем куки отличаются от сессий? Знаю, что кукам можно задать время, которое они будут действовать, а сессия умирает после закрытия браузера...
Но мне не понятно, в каких случаях нужно использовать куки, а в каких сессии?
Good Mode: оукей, сессия не может существовать больше или меньше чем кука, в которой хранится ID сессии. Ну и да, в случае если нужно долгосрочно хранить данные на клиенте используют local storage/web session и т.д. Хранить данные в куках как минимум не экономично так как все эти килобайты данных будут отсылаться с КАЖДЫМ http запросом.
Сергей Протько: Безусловно. Но попробую объяснить свою мысль другими словами, дабы не смущать автора вопроса и читателей.
Cookies - это инструмент, который позволяет сохранить на компьютере пользователя какие-то краткие идентификационные данные после закрытия браузера, дабы иметь возможность использовать их повторно в будущем.
Сессии же для пользователя живут до тех пор, пока браузер не будет закрыт.
Если ошибаюсь в этом, то буду благодарен за указание.
Good Mode: сессия живет столько, сколько живет кука с идентификатором этой сессии. Вы можете ее вообще сделать вечноживущей (пока пользователь сам не удалит куку).
Сергей Протько: Мне неловко парировать слова специалиста. Да, Вы правы. Но ведь не говорил про сервер, сказал исключительно с точки зрения клиента. Браузер открыт - сессия для пользователя есть, закрыт - сессии нет (но на сервере есть). Cookies же есть и после закрытия браузера. Не так?
Good Mode: ну.... это как закрыть глаза и думать что тебя не видно. И кука и сессия есть. И с тем и с другим нельзя работать пока браузер закрыт. С куками можно работать на клиенте (если это не http-only куки), тогда как на сервере работать с сессией мы можем только при обработке запросов с клиента. Хотя конечно если у нас есть доступ к хранилищу сессий мы можем записать что-то всем пользователям, или идентификатор сессии хранить для каждого пользователя, тогда можно с оными работать всегда.