mozilla

Revision 38990 of document.cookie

  • Enlace amigable (slug) de la revisión: DOM/document.cookie
  • Título de la revisión: document.cookie
  • Id de la revisión: 38990
  • Creada:
  • Creador: memo666x
  • ¿Es la revisión actual? No
  • Comentario 360 words added, 194 words removed

Contenido de la revisión

{{ DomRef() }}

{{ Traducción("inglés", "DOM:document.cookie", "en") }}

Resumen

Con document.cookie se obtienen y definen las cookies asociadas con el documento.

Sintaxis

todasLasCookies = document.cookie;

todasLasCookies es una cadena que contiene una lista de cookies en formato clave=valor separadas por punto y coma (;)

document.cookie = cookieActualizada;

cookieActualizada es una cadena de la forma clave=valor. Cabe mencionar que solo se puede actualizar una cookie a la vez mediante este método.

Cualquiera de los siguientes atributos opcionales puede ser escrito después del par clave-valor, afectandi a la cookie a establecer o actualizar, precedidos de un punto y coma.

  • ;path=path (p. ej.: '/'. '/midir'). Si no se especifica, por defecto corresponde a la ruta del documento actual.
  • ;domain=domain (p. ej. 'example.com', '.example.com' (incluye todos los subdominios), 'subdomain.example.com') Si no se especifica, corresponde por defecto a la porción de la dirección web de la ubicación actual del archivo.
  • ;max-age=duración-máxima-en-segundos Por ejemplo: 60*60*24*365 para un año.
  • ;expires=fecha-en-formato-GMTString Si no se especifica expirará al terminar la sesión actual.
  • ;secure La cookie sólo será transmitida en un protocolo seguro (HTTPS, SSL).

El valor de la cookie puede ser evaluado mediante encodeURIComponent() para asegurarse de que dicha cadena no incluya comas, punto y coma, ni espacios en blanco (lo cual no está permitido en el valor de una cookie.

{{ gecko_callout_heading("6.0") }}
Nótese que previamente a Gecko 6.0 {{ geckoRelease("6.0") }}, rutas que contenían comillas eran tratadas como si las comillas fueran parte de la cadena, en lugar de considerarse como un delimitador de la ruta actual. Esto ya ha sido arreglado.

Ejemplo

Uso simple:

document.cookie = "name=oeschger";
document.cookie = "favorite_food=tripe";
alert(document.cookie); // visualizar: name=oeschger;favorite_food=tripe

Seguridad

Es importante mencionar que la restricción path no protege contra la lectura no autorizada de cookies de una ruta distinta. Puede ser fácilmente resuelto mediante DOM (por ejemplo creando un iframe oculto con la ruta de la cookie y accediendo a la propiedad contentDocument.cookie del iframe). La única manera de proteger el acceso a cookies es ocupando un dominio o subdominio diferente, debido a la política de mismo origen.

Notas

  • Empezando con Firefox 2, está disponible un mejor mecanismo de almacenamiento en cliente - WHATWG DOM Storage.
  • Puedes eliminar una cookie simplemente estableciendo su fecha de expiración a cero.
  • Cabe mencionar que entre más cookies se tengan, mayor cantidad de datos serán transferidos entre el servidor y el cliente en cada solicitud. Esto reducirá el tiempo entre cada solicitud. Es altamente recomendado que se utilice WHATWG DOM Storage si se van a mantener los datos solamente en el cliente.

Especificación

DOM Level 2: HTMLDocument.cookie

{{ languages( { "en": "en/DOM/document.cookie", "pl": "pl/DOM/document.cookie" } ) }}

Fuente de la revisión

<p>{{ DomRef() }}</p>
<p>{{ Traducción("inglés", "DOM:document.cookie", "en") }}</p>
<h3 name="Resumen">Resumen</h3>
<p>Con <code>document.cookie</code> se obtienen y definen las <code>cookies</code> asociadas con el documento.</p>
<h3 name="Sintaxis">Sintaxis</h3>
<pre class="eval"><em>todasLasCookies</em> = <em>document</em>.cookie;
</pre>
<p><code>todasLasCookies</code> es una cadena que contiene una lista de cookies en formato <code>clave=valor</code> separadas por punto y coma (;)</p>
<pre class="eval"><em>document</em>.cookie = c<em>ookieActualizada</em>;</pre>
<p class="eval"><code>cookieActualizada</code> es una cadena de la forma <code>clave=valor</code>. Cabe mencionar que solo se puede actualizar una cookie a la vez mediante este método.</p>
<p class="eval">Cualquiera de los siguientes atributos opcionales puede ser escrito después del par clave-valor, afectandi a la cookie a establecer o actualizar, precedidos de un punto y coma.</p>
<ul> <li class="eval"><strong><code>;path=path</code></strong> (p. ej.: '/'. '/midir'). Si no se especifica, por defecto corresponde a la ruta del documento actual.</li> <li class="eval"><strong><code>;domain=domain</code></strong> (p. ej. 'example.com', '.example.com' (incluye todos los subdominios), 'subdomain.example.com') Si no se especifica, corresponde por defecto a la porción de la dirección web de la ubicación actual del archivo.</li> <li class="eval"><strong><code>;max-age=duración-máxima-en-segundos</code></strong> Por ejemplo: 60*60*24*365 para un año.</li> <li class="eval"><code><strong>;expires=fecha-en-formato-GMTString</strong></code> Si no se especifica expirará al terminar la sesión actual.</li> <li class="eval"><strong><code>;secure</code></strong> La cookie sólo será transmitida en un protocolo seguro (HTTPS, SSL).</li>
</ul>
<p class="eval">El valor de la cookie puede ser evaluado mediante <a href="/es/Referencia_de_JavaScript_1.5/Funciones_globales/encodeURIComponent" title="encodeURIComponent">encodeURIComponent()</a> para asegurarse de que dicha cadena no incluya comas, punto y coma, ni espacios en blanco (lo cual no está permitido en el valor de una cookie.</p>
<div class="geckoVersionNote">{{ gecko_callout_heading("6.0") }}<br>
</div>
<div class="geckoVersionNote">Nótese que previamente a Gecko 6.0 {{ geckoRelease("6.0") }}, rutas que contenían comillas eran tratadas como si las comillas fueran parte de la cadena, en lugar de considerarse como un delimitador de la ruta actual. Esto ya ha sido arreglado.</div>
<h3 name="Ejemplo">Ejemplo</h3>
<p>Uso simple:</p>
<pre class="script-jem">document.cookie = "name=oeschger";
document.cookie = "favorite_food=tripe";
alert(document.cookie); // visualizar: name=oeschger;favorite_food=tripe</pre>
<h3 name="Notas">Seguridad</h3>
<p>Es importante mencionar que la restricción path no protege contra la lectura no autorizada de cookies de una ruta distinta. Puede ser fácilmente resuelto mediante DOM (por ejemplo creando un <a href="/en/HTML/Element/iframe" title="en/HTML/Element/iframe">iframe</a> oculto con la ruta de la cookie y accediendo a la propiedad contentDocument.cookie del iframe). La única manera de proteger el acceso a cookies es ocupando un dominio o subdominio diferente, debido a la <a href="/en/Same_origin_policy_for_JavaScript" title="Same origin policy for JavaScript">política de mismo origen</a>.</p>
<h3 name="Notas">Notas</h3>
<ul> <li>Empezando con Firefox 2, está disponible un mejor mecanismo de almacenamiento en cliente - <a href="/es/DOM/Storage" title="es/DOM/Storage">WHATWG DOM Storage</a>.</li> <li>Puedes eliminar una cookie simplemente estableciendo su fecha de expiración a cero.</li> <li>Cabe mencionar que entre más cookies se tengan, mayor cantidad de datos serán transferidos entre el servidor y el cliente en cada solicitud. Esto reducirá el tiempo entre cada solicitud. Es altamente recomendado que se utilice <a href="/es/DOM/Storage" title="es/DOM/Storage">WHATWG DOM Storage</a> si se van a mantener los datos solamente en el cliente.</li>
</ul>
<h3 name="Especificaci.C3.B3n">Especificación</h3>
<p><a class="external" href="http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-8747038">DOM Level 2: HTMLDocument.cookie</a></p>
<p>{{ languages( { "en": "en/DOM/document.cookie", "pl": "pl/DOM/document.cookie" } ) }}</p>
Revertir a esta revisión