Considere el siguiente caso:peticiones POST cuando fallan <sessionState sin cookies = "detección automática" /> se establece
- Un servidor Web se está ejecutando una aplicación .NET con
<sessionState cookieless="AutoDetect" />
. - Un cliente está PUBLICANDO datos utilizando un simple
HttpWebRequest
(sin cookies).
Esta aparentemente simple caso de las principales causas fracaso.
Desde .NET no se puede determinar si el agente solicitante (HttpWebRequest
) soporta cookies, que responde a la solicitud POST con una redirección 302 encontrado en la misma ubicación con:
- una cookie nombrado en el
AspxAutoDetectCookie
respuesta
- se supone entonces un parámetro de consulta con nombre
AspxAutoDetectCookie
en la ubicación remitido
el agente solicitante para solicitar la nueva ubicación, lo que hace HttpWebRequest
. Cuando .NET ve AspxAutoDetectCookie
en la cadena de consulta, sabe que se trata de una nueva solicitud, y puede determinar si las cookies son compatibles al ver si una cookie llamada AspxAutoDetectCookie
se encuentra en los encabezados de las solicitudes.
El problema es que la mayoría de los agentes solicitantes (navegadores web, HttpWebRequest
) tratan un 302 Encontrado como si fuera un 303 Consulte Otro y haga que la solicitud vuelva a ser OBTENIDA, ¡independientemente del método HTTP original! Cualquier información enviada en la solicitud POST inicial no se reenvía.
La respuesta correcta debe ser un redireccionamiento temporal 307, que no cambia el método de solicitud. (Una solicitud POST a la ubicación X redirige a una solicitud POST a la ubicación Y.)
¿Hay alguna manera de cambiar este comportamiento en .NET para que las solicitudes POST no se destruyan?
Information on 3xx redirection
No funciona aquí al menos. Aún descarta los datos de la publicación. – Karlth
Funciona si agregamos el encabezado: 'Cookie: AspxAutoDetectCookie = 1'. – Artyom