Casa
Correo electrónico Imprimir PDF

Hace unos días decidió investigar en detalle con las cookies: cómo funcionan, la estructura de la forma de uso. Para entender la decisión final fue tomada para descargar el plugin para trabajar con las cookies en jQuery. Puede crédito para plug-in incluido Galletas plugin para jQuery.

Voy a empezar con tal vez la teoría. Las cookies son parte de HTTP. Desde el servidor al cliente cookies enviados en el encabezado de HTTP de respuesta del servidor. Más precisamente - en el campo de la cabecera Set-Cookie. Campo Set-Cookie puede contener datos de varias cookies. También en la cabecera HTTP de respuesta puede contener múltiples campos Set-Cookie. Formato de campo Set-Cookie cabecera HTTP de respuesta del servidor es la siguiente:

Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]

  • Atributo expire. Especificado en el formato: expires =. La fecha y hora fijadas para el final de un determinado campo Set-Cookie cabecera HTTP, servidor de cookies de respuesta. Valor debe ser una cadena que especifica la hora en Greenwich (GMT) en el formato "DIA, DD-MMM-AAAA HH: MM: SS GMT" (por ejemplo, "Tue, 28 de febrero 2006 12:41:04 GMT"). Después de la expiración de la cookie se elimina por su navegador. Si el atributo no se especifica expira (el tiempo de la cookie no está establecido), galletas eliminado al final del navegador. Esta cookie se llama "el período de sesiones" (sólo hasta el final de la sesión actual).
  • Atributo dominio. Especifica en el dominio format =. Define el final de la serie de nombres de dominio, lo que realmente establece la cookie. Por ejemplo, si instala cookie, el valor равно .codeguru.ru, установленные cookie будут отсылаться серверу при запросе документов с сайтов, расположенных на доменах web.codeguru.ru, forum.codeguru.ru, и.т.д. При этом дополнительным условием отсылки cookie будет являться проверка значения атрибута path — см. далее. Atributo domain весьма полезен. Он может использоваться, например, для организации единой системы аутентификации пользователя для различных web-сервисов, расположенных на различных поддоменах. Например, на основном сайте и на форуме сайта. Во избежание неконтролируемой отсылки cookie, значение no sólo debe contener el nombre de la zona (por ejemplo,. com,. net.ru, etc.)
  • Atributo trayectoria. Especificado en la ruta format =. Define un conjunto de URL, lo que realmente establece la cookie. Por ejemplo, si cuando se instala el mismo de cookies / temporales, cookies se establece será enviado al solicitar los documentos, incluyendo la ruta / temp000 y / temp / temp.htm. Si el valor de la ruta no se especifica, se acepta como un camino a un recurso, cuando se le preguntó que proporcionan una cookie.
  • Atributo seguro. Este atributo es un valor booleano. Especificar el atributo en el campo de la seguridad Set-Cookie cabecera HTTP de respuesta del servidor se pone cookie segura. Esta cookie se envía al servidor únicamente a través de https. HTTPS - es prácticamente el mismo protocolo http, sólo los datos entre el cliente y el servidor se transmiten a través de una conexión segura (datos cifrados) SSL (Secure Socket Layer) de conexión.
  • Atributo HttpOnly. Este atributo es un valor booleano. Especificar el atributo HttpOnly en el Set-Cookie cabecera HTTP de respuesta del servidor no se pone a disposición de los cookies el script de cliente (esto se aplica por razones de seguridad).

Además, los más interesantes: plugin de análisis para trabajar con las cookies.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
jQuery.cookie = function(){
var url = location.href; // путь для устанавливаемых кук
this.cookieID = "cookie"; // имя для переменной, которая будет содержать наши куки

this.set = function(options){ // Функция для установки кук
var cookieContent = ''; // инициализируем переменную для цикла for
var filterProperties = {"cookieID":0,"set":1,"get":2}; // создаем объект с известными значениями
options = options || {}; // если переданы пользовательские переменные, используем их. По умолчанию ничего не устанавливаем

for(var property in this){ // перебираем все элементы полученного объекта
if(!(property in filterProperties)){ // вытягиваем все элементы кроме тех, которые содержатся в filterProperties
if (this[property] === null) this[property] = ''; // если имеем ноль заменяем на ''
cookieContent += (property) + ':' + (this[property]) + ','; // записываем имя переменной + значение переменной
}
}
cookieContent = cookieContent.substring(0,cookieContent.length-1); // удаляем последнюю запятую
var expires = ''; // инициализируем переменную
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { // если у нас есть какое ли значение то
var date; // создаем переменную для даты
if (typeof options.expires == 'number') { // если это число
date = new Date(); // текущую дату
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); // устанавливаем время
} else {
date = options.expires; // пустое значение; куки будут храниться до конца сессии
}
expires='; expires='+ date.toUTCString(); // устанавливаем время жизни кук
}
var path = options.path ? '; path=' + (options.path) : ''; // устанавливаем url для которых действительны устанавливаемые куки
var domain = options.domain ? '; domain=' + (options.domain) : ''; // устанавливаем мия сайта
var secure = options.secure ? '; secure' : ''; // указываем, следует ли шифровать данные или нет
document.cookie = [this.cookieID, '=',encodeURIComponent(cookieContent), expires, path, domain, secure].join(''); // делаем из массива строку и записываем ее в куки
return true;
};

this.get = function(){ // функция для получения кук
var cookieValue = '';
if (document.cookie && document.cookie != '') { // если куки доступны и существуют
var cookies = document.cookie.split(';'); // разбили и получили массив
for (var i = 0; i < cookies.length; i++) { // выполняем перебор массива
var cookie = jQuery.trim(cookies[i]); // обрезали все отступы
if (cookie.substring(0, this.cookieID.length + 1) == (this.cookieID + '=')) { // находим слово cookie
cookieValue = decodeURIComponent(cookie.substring(this.cookieID.length + 1)); // выдернули все значения
break;
}
}
var properties = cookieValue.split(','); // разбили все значения по , в массив
for(var i = 0; i<properties.length;i++){ // перебрали массив
var property = properties[i].split(':'); // разбили каждый элемент и
this[property[0]] = property[1]; // добавили свойства к объектам
}

}
return true;
};
return this;
};

HTML se ve de esta manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script src="http://www.ageent.ru/templates/ageent/script/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="http://www.ageent.ru/templates/ageent/script/jquery.cookie.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
var c = new $.cookie(); // создаем объект для работы с куками

// блок для записи кук
$("button:eq(0)").click(function () {
c.text = prompt("Введем значение для text");
c.set({ expires: 300, path: '/'});
});

// блок для удаления кук
$("button:eq(1)").click(function () {
c.text="";
c.set({ expires: -300, path: '/'});
});

//блок который показывает содержимое всех кук
$("button:eq(2)").toggle(
function () {
$(".too").html(document.cookie);
$(this).html("Спрятать куки");
},
function () {
$(".too").html("");
$(this).html("Как выглядят куки в реале");
}
);

//блок который показывает что мы записали в куки
$("div").live("mousemove", function(){
c.get(); // получаем куки
if((typeof(c.text) != 'undefined' )) {
$(".one").html("Мы записали в куки: <b>text: "+c.text+"</b>");
}
if((c.text == "")) {
$(".one").html("");
}
});
});
</script>
</head>

<body>
<div class="main">
<button>Записать значение в куки</button>
<button>Очистить куки</button>
<button>Как выглядят куки в реале</button>
<div class="one"></div>
<div class="too"></div>
</div>
</body>
</html>

En realidad, he aquí un ejemplo:

Archivos adjuntos:
Un ejemplo que ilustra el trabajo con las cookies21 Kb

Autorización

Niza Ajax Encuesta

¿Cuál de mis extensiones es el mejor?

Estadística

Traducir

русскийitalianoDeutschEnglishLATVIANукраїнськаfrançaispolski
1

Anuncio