2009-01-28 15 views
16

Estoy usando un plugin de jQuery para establecer cookies y cuando uso localhost para el dominio, no almacena la cookie.¿Puedo usar localhost como el dominio al configurar una cookie HTTP?

Aquí está el complemento que estoy usando con jQuery 1.2.6.

http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/

A continuación se muestra el código que estoy usando. Puede ver que no le gusta el host local, y lo estoy ejecutando desde un servidor web de desarrollo en el host local. Un detalle es que me estoy escapando del puerto 4005, pero eso no debería afectar el dominio, AFAIK.

$(function() { 

    console.log('Testing'); 

    var one = $.cookie('Test.One'); 
    var two = $.cookie('Test.Two'); 
    var three = $.cookie('Test.Three'); 

    console.log(['one', one]); 
    console.log(['two', two]); 
    console.log(['three', three]); 

    $('#div1').text(one); 
    $('#div2').text(two); 
    $('#div3').text(three); 

    $.cookie('Test.One', 'Test 1'); 
    $.cookie('Test.Two', 'Test 2', { path: '/' }); 
    $.cookie('Test.Three', 'Test 3', { path: '/', domain: 'localhost' }); 

}); 

Respuesta

28

Tuve un problema similar con la configuración de cookies. Invente un nombre de dominio y agréguelo a su archivo de hosts como 127.0.0.1. Luego ejecute la aplicación web en ese dominio.

+0

Sí, debería leer esta publicación en lugar de perder 2 horas ;-) "localhost" definitivamente no es un buen valor! –

+1

Solo usa "lvh.me". Este nombre de dominio ya apuntaba a 127.0.0.1 –

5

Intenté configurar el archivo de host para usar un nombre alternativo (local.acme.com) y ahora puedo establecer las cookies en ese dominio. Parece que no puedo establecer cookies en localhost, al menos no con Firefox. No recuerdo que sea una restricción para las cookies. Me gustaría entender qué está pasando aquí.

Además, intenté simplemente hacer el dominio en el archivo de hosts simplemente "dev" pero eso no funcionó. Tuve que usar un nombre que terminó en .com o en otro tld para que funcione.

+0

sí, solo funciona con nombres de dominio completamente calificados. Supongo que tiene que ver con la necesidad de establecer la misma cookie para más de un nombre de dominio, p. www1.domain.com, www2.domain.com, por lo que debe configurar la cookie con el dominio .domain.com. – empi

+1

Como señalé en mi respuesta, el RFC establece que tiene que ver con el número de puntos en el nombre de dominio, no si está totalmente calificado o no. –

10

Creo que el nombre de dominio de una cookie debe tener exactamente dos puntos (sin contar el punto final después del TLD). Entonces, .something.localhost está bien, .google.com está bien, pero .localhost o google.com no. Pero un vistazo a RFC 2965 sugiere que es más complicado que eso ... es posible que desee leer ese documento, especialmente la sección 3.3 (y/o su precursor, RFC 2109).

+4

¿De verdad? Pensé que podría establecer cookies para, por ejemplo, example.com, y que se enviarían a todos los dominios de example.com (por ejemplo, www.example.com, en realidad, no necesitamos-la-cookie-aquí-pero -you-sent-it-anyway-what-a-waste-of-bandwidth-eh.example.com) –

+0

Bueno, una parte relevante es la siguiente: _'Una Set-Cookie2 del ejemplo request-host para Domain =.local será aceptado, porque el nombre de host efectivo para el host de solicitud es example.local y example.local domain-matches .local ._ Solo necesita aceptar .localhost. en lugar de .local – Nicolay77

11

Actualicé el complemento jQuery para no agregar el dominio a la cookie cuando es localhost. Eso resuelve mi problema sin tocar el archivo hosts.

var domain = (options.domain && options.domain !== 'localhost') ? '; domain=' + (options.domain) : ''; 
6

estoy usando Código del encendedor, y establecer el dominio a una cadena vacía fijado mi problema mientras se trabaja en la aplicación en el servidor local. Creo que esta es la mejor solución ya que todos los integrantes del equipo de desarrollo no necesitan meterse con sus archivos host en Windows.

Los valores del dominio de producción se pueden poner en config.php de Code Ignitor cuando se implementan en un sitio en vivo.

+0

+1 esto funciona * y * es flexible en diferentes máquinas de desarrollo. Para mí, esto parece ... document.cookie = "MyCookie =" + yourCookieValueHere + "; domain ="; – StarTrekRedneck

3

La solución más simple para mí para resolver esto era usar 127.0.0.1 en lugar de localhost ;-) ¡Eso funciona bien en Firefox!

+0

No funciona con Webkit. –

Cuestiones relacionadas