Cookies в або як зберігати невелику інформацію на стороні клієнта

Що таке Cookie?

Cookie - це один зі способів зберігання некториє інформації про користувача сайту в той час коли користувач не знаходиться на сайті. Cookie зазвичай використовуються для збереження інформації про користувача між його візитами на сайт. Cookie - це невеликий текствой файл відправлення сервером (сайтом) і збережений оглядачем на комп'ютері клієнта (користувача). Наприклад, коли користувач приходить до Вас на сайт, то Ви можете зберегти інформації про його останній візит, а при наступному відвідуванні, можна з лугкостью прочитати цю інформацію і показати користувачеві, коли він був на сайті в останній раз.

Як створити Cookie в ASP.NET

'Додаємо це в початок файлу .vb коду
Imports System.Web

'Створюємо cookie
Response.Cookies ( «MyCookieName») .Value = «MyCookieValue»

'Задаємо термін закінчення терміну дії cookie
Response.Cookies ( «MyCookieName») .Expires = Now.AddDays (1)

'Задаємо значення ключ / значення (key / value) в один cookie
Response.Cookies ( «VisitorData») ( «FirstName») = «Richard"
Response.Cookies ( «VisitorData») ( «LastVisit») = Now.ToString ()

[C #]

// додаємо це в початок файлу .cs коду
using System;

// створюємо cookie
Response.Cookies [ «MyCookieName»] .Value = «MyCookieValue»;

// задаємо термін закінчення терміну дії cookie
Response.Cookies [ «MyCookieName»] .Expires = DateTime .Now.AddDays (1);

// задаємо значення ключ / значення (key / value) в один cookie

Response.Cookies [ «VisitorData»] [ «FirstName»] = «Richard";
Response.Cookies [ «VisitorData»] [ «LastVisit»] = DateTime .Now.ToString ();

Як прочитати значення з Cookie

Для читання cookie використовуємо наступний код:


Dim MyCookieValue As String
'Спочатку нам потрібно перевірити на null наявність cookie
If Not Request.Cookies ( «MyCookieName») Is Nothing Then
MyCookieValue = Request.Cookies ( «MyCookieName») .Value
End If

string MyCookieValue;
// спочатку нам потрібно перевірити на null наявність cookie
if (Request.Cookies [ «MyCookieName»]! = null)
MyCookieValue = Request.Cookies [ «MyCookieName»] .Value;

Для видалення існуючого cookie зазвичай задається пройшла дата в строк закінчення (expire). це можна зробити так:

'Перевірка на існування cookie
If Not Request.Cookies ( «MyCookieName») Is Nothing Then
'Установка терміну
Response.Cookies ( «MyCookieName») .Expires = Now.AddDays (-1)
End If

// перевірка на існування cookie
if (Request.Cookies [ «MyCookieName»]! = null)
# 123;
// установка терміну
Response.Cookies [ «MyCookieName»] .Expires = DateTime .Now.AddDays (-1);
# 125;

Клас HttpCookie знаходить в просторі імен System.Web. Ви можете використовувати HttpCookie для маніпулювання cookies замість об'єктів Response і Request.

HttpCookie має такі властивості:

Ви можете використовувати клас HttpCookie для створення кукис таким чином:


Dim MyGreatCookie As HttpCookie = New HttpCookie ( «MyCookieName»)
MyGreatCookie.Value = «Some cookie value»
MyGreatCookie.Expires = Now.AddDays (100)
Response.Cookies.Add (MyGreatCookie)


HttpCookie MyGreatCookie = new HttpCookie ( «MyCookieName»);
MyGreatCookie.Value = «Some cookie value»;
MyGreatCookie.Expires = DateTime .Now.AddDays (100);
Response.Cookies.Add (MyGreatCookie);

Обмеження браузерів на використання cookies.

Мааксімальний розмір файлу кукис може бути 4096 байт. Це не багато, але в принципі достатньо щоб зберігати корисну інформацію, зокрема ID користувача. Також буде обмежено й кількість файлів кукисов. Їх може бути не більше 20 на одні web-сайт. Якщо ви створите новий 21-ий кукис, то броузер видалить найстаріший кукис з уже існуючих.

Відвідувач сайту може устновіть в своєму браузері «не використовувати cookies». У цьому випадки, Ви не зможете записати файл кукис на комп'ютері користувача, саме тому і слід перевіряти настройки броузера перед тим як записувати кукіси.

Якщо відвідувач відключить використання кукисов, Вам потрібно вирішити, чи хочете записувати дані якимось іншим способом (наприклад, Session) чи ні. Якщо використання кукис необхідно для роботи сайту, то користувач повинен отримати повідомлення про те, що йому необхідно включити використання кукисов.

Причини відсутності підтримки браузером кукисов (cookies)

Існує дві причини, через які клієнтський комп'ютер не зможе прийняти кукіси:

- Web-браузер не підтримує кукіси;
- Web-броузер підтримує, але користувач відключив їх використання навмисно.

Як визначити поддердівает чи броузер кукіси (cookies)

[VB.NET]

If Request.Browser.Cookies Then
'підтримує
Else
' не підтримує
End If


if (Request.Browser.Cookies)
# 123;
// підтримує
# 125;
else
# 123;
// не підтримує
# 125;

Як визначити, що броузер підтримує кукіси, але користувач відключив цю можливість

Якщо користувач відключив використання кукисов в броузері, то вище зазначений метод Request.Browser.Cookies при перевірки все одно поверне true, але кукіси не зберігатимуться на комп'ютері кліета. Один із способів перевірки в даному випадки є спроба зберегти кукис на першій сторінці, а потім використовуючи Response.Redirect перенаправити на іншу сторінку і прочитати записаний кукис.

Краща практика при використанні cookies в ASP.NET

Кукіси - це простий текст, і тому не використовуються для зберігання важливої ​​інформації такої як паролі без попередньо шифрування. Якщо Ви хочете використовувати опцію «Запам'ятати мене», настійно рекомендую шифрувати дані записані в кукис. Кукіси зазвичай використовуються для зберігання інформації наступного типу: остання дата візиту користувача, улюблений колір, вік відвідувача і т.д.

Питання безпеки при використанні Cookies в ASP.NET