2011-12-13 18 views
7

Necesito leer una cookie creada en https://sub1.domain.com desde http://origin.domain.com usando ColdFusion. He visto mucha información sobre cómo crear una cookie en un subdominio usando CFCOOKIE, pero no sé cómo acceder a una cookie que ya existe.Leer cookies entre dominios (Cross-Sub-Domain) en ColdFusion (HTTPS)

¿Las HTTPS lo harán imposible de todos modos?

ADDENDUM: La respuesta marcada a continuación aborda correctamente la pregunta tal como se indicó anteriormente. En mi caso, no funcionó. Debería haber explicado: La cookie en sub1.domain.com es creada por un producto alojado de un tercero, no escrito en ColdFusion y no bajo mi control.

Respuesta

6

Esto es realmente bastante fácil. Cuando crea la cookie, dele un atributo de dominio igual a su dominio. La parte importante para recordar es que DEBE tener un punto inicial.

<cfcookie name="mycookie" value="myvalue" domain=".mydomain.com" path="/" /> 

El punto inicial indica al navegador enviar la cookie a cualquier subdominio de mydomain.com que incluiría sub.mydomain.com y blah.mydomain.com.

A continuación, sería capaz de acceder a la cookie de cualquiera de los subdominios del mismo modo que cualquier otra cookie:

<cfset thevalue = cookie.mycookie /> 

usted debe hacer esto como una buena práctica para apoyar a los navegadores antiguos.

Aquí está la declaración de RFC2109: Mecanismos de gestión de estado HTTP que podrían afectar los navegadores antiguos

"Para evitar posibles violaciónes de seguridad o privacidad, un agente de usuario rechaza una cookie (no deberá almacenar su información) si ... El valor de el atributo de dominio no contiene puntos incrustados o no comienza con un punto ".

Creo que esto es anulado por el RFC 2965: mecanismo de gestión de HTTP Estado que establece

"Dominio = valor opcional El valor del atributo de dominio especifica el dominio para el que es válida la cookie.. Si un valor explícitamente especificado no comienza con un punto, el agente de usuario proporciona un punto principal ".

Lo que explica por qué podría funcionar para usted en, presumiblemente, un navegador moderno. Todavía te sugiero que lo agregues.

+0

En realidad, acabo de probar esto - el punto inicial no era necesario cuando lo hice. –

+0

HTTPS puede preparar la cookie HTTP, pero no al revés, ¿verdad? – Henry

+1

Las pruebas que acabo de probar funcionaron en ambos sentidos. Presumiblemente, si desea limitarlo a solo https, puede especificar secure = "true" –

Cuestiones relacionadas