Pregunta

De acuerdo con la RFC, galletas individuales en el "Cookie" cabecera HTTP puede ser separados por comas, así como por punto y coma. Sin embargo, ASP.NET no analiza el caso comas correctamente -. No cuenta coma como separador, pero considera que es sólo una parte del valor

Por ejemplo Si un cliente envía Cookie: a=b, c=d cabecera, a continuación, la aplicación ASP.NET verá sólo una cookie llamada "a" con valor "b, c = d".

Como caso especial, lo mismo sucede cuando el cliente envía varios encabezados de las cookies (una para cada cookie) en lugar de la combinación de todas las galletas en una cabecera. Desde la perspectiva HTTP, esto es completamente válida, y en tal caso el valor efectivo de la cabecera debe ser concatenación de los valores de todas sus instancias separadas por comas.

¿Alguien sabe una solución (o tal vez una solución?) Para esto? Me absolutamente necesario para conseguir este trabajo, porque yo no controlo el cliente.

P.S. Resulta irónico que, de acuerdo con este hilo , .NET integrado HTTP (también conocido como HttpWebRequest) el comportamiento del cliente es todo lo contrario, y también causa problemas. : -)

¿Fue útil?

Solución

Creo que la solución más simple para conseguir el comportamiento deseado (independientemente de las normas de corrección) sería la creación de un HttpModule que analizar correctamente esta información desde el lugar y HttpContext.Request.Headers información corregida en HttpContext.Request.Cookies.

Otros consejos

Tanto el RFC 2109 y RFC 2965 no son conocidos para describir la realidad.

Se debe echar un vistazo a proyecto-IETF-httpstate -cookie que es un producto de trabajo de la nueva IETF httpstate grupo de trabajo.

La versión se ha vinculado a es obsoleto. Este documento HTTP Estado mecanismo de gestión es la mejor y más nuevo y especifica un punto y coma. Sí dice que comas deben ser aceptados para la compatibilidad futura, pero esto no es necesario:

  

Nota: Por razones de compatibilidad, el separador en la cabecera Cookie      es punto y coma (;) en todas partes. Un servidor también debe aceptar coma (,)      como separador entre los valores de cookie para la compatibilidad futura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top