2008-11-15 13 views
6

Tengo problemas con HttpWebRequest/HttpWebResponse y cookies/CookieContainer/CookieCollection. El problema es que si el servidor web no envía/usa una "ruta" en la cookie, Cookie.Path es igual a la ruta-parte del URI de solicitud en lugar de "/" o está vacía en mi aplicación. Por lo tanto, esas cookies no funcionan para todo el dominio, lo que realmente hace en los navegadores web adecuados. ¿Alguna idea de cómo resolver este problema?Problemas con HttpWebRequest/HttpWebResponse y cookies

Gracias de antemano

Respuesta

4

Ah, ya veo a qué te refieres. Generalmente lo que hacen los navegadores realmente es tomar la carpeta que contiene el documento como ruta; para '/login.php' que sería '/' para que funcione efectivamente en todo el dominio. '/potato/login.php' estaría limitado a '/ potato /'; cualquier cosa con partes de información de ruta posterior (por ejemplo, '/login.php/') no funcionaría.

En este caso, las especificaciones de Netscape podrían considerarse erróneas o al menos engañosas al afirmar que la ruta predeterminada es la ruta del documento actual ... dependiendo de cómo se lea exactamente 'ruta' allí. Sin embargo, el comportamiento del navegador es constante en cuanto a la versión original de Netscape. Netscape nunca fueron tan buenos en las especificaciones de escritura ...

Si de .NET HttpWebRequest es realmente morosos CookieContainer.Path a la totalidad ruta del documento actual, me gustaría informar de un problema en contra de ella.

Lamentablemente, el comportamiento en el mundo real actualmente no se describe en un documento estándar ... existe el RFC 2965, que hace que el camino sea correcto, pero hace otros cambios no representativos del comportamiento del navegador en el mundo real, por lo eso tampoco es del todo confiable. :-(

0

Así funcionan las cookies. ‘Adecuado’ navegadores web hacen exactamente lo mismo, según lo especificado originalmente en la antigua Netscape galletas doc: http://cgi.netscape.com/newsref/std/cookie_spec.html

aplicaciones web deben efectivamente siempre establecer un ‘camino’ (a menudo ‘/’).

+0

Gracias, bobince. Veo, pero esto es un poco extraño para mí, porque este sitio web del que estaba hablando que no establece un "camino", de alguna manera todavía parece funcionar en todo el dominio en Internet Explorer y Firefox al menos. Alguna idea? – James

1

Parece que no puedo ir más lejos con el manejador de cookies predeterminado, así que me molesté y lo hice de la manera difícil. Jaja. Así que la respuesta de análisis. Hderes ["Set-Cookie"] yo mismo soy mi solución No es mi preferido, pero funciona. Y simplemente eliminé el problema con la división en la coma incorrecta usando expresiones regulares.

Si pudiera dar puntos aquí, les daría algunos, bobince, porque me dieron información valiosa. También votaría si pudiera (necesito una puntuación más alta), pero dado que este comportamiento probablemente sea un error, como usted mencionó, lo aceptaré como una respuesta.

Gracias. :)

+0

¡Gracias por detectar el error y hacerlo googlable! :-) – bobince