REVISIÓN: ServerXMLHTTP no devuelve Cookies mediante la autenticación NTLM

Síntomas

Puede utilizar el objeto ServerXMLHTTP para recuperar y volver a enviar las cookies de sesión. Puede recuperar la cookie de la cabecera de la respuesta y vuelva a enviar la cookie a través del encabezado de solicitud. Todo funciona como se espera cuando se utiliza el método de autenticación anónima . Sin embargo, cuando se utiliza el método de autenticación NTLM y volver a enviar la cookie, la cookie se pierde.

Solución

Para resolver este problema, utilice uno de los métodos siguientes:
  • Método 1: Instalar MDAC 2.7 Service Pack 1 (SP1). Esto contiene MSXML 3.0 SP3, que contiene la revisión. MDAC 2.7 SP1 está disponible para su descarga en el siguiente sitio Web de Microsoft:
  • Método 2: Instalar MSXML 4.0 Parser. El analizador de MSXML 4.0 está disponible para su descarga en el siguiente sitio Web de Microsoft:Para utilizar MSXML 4.0 cambie el código de la siguiente ID de Prog.:

    Msxml2.ServerXMLHTTP.3.0

    en el siguiente ID de Prog:

    Msxml2.ServerXMLHTTP.4.0

Estado

Microsoft ha confirmado que se trata de un error en el componente ServerXMLHTTP.
Se ha corregido en la versión más reciente de MSXML 3.0 SP3, que se incluye con MDAC 2.7 SP1.

Más información

Pasos para reproducir el comportamiento

  1. En el Explorador de Windows, cree una carpeta denominada Test en la carpeta raíz del servidor Web la carpeta raíz normalmente se encuentra en la ubicación siguiente: C:\Inetpub\Wwwroot\.
  2. En el panel izquierdo de los servicios de Internet Information Server, (ratón) en el sitio Web predeterminado, cree un Directorio Virtual llamado prueba y, a continuación, elija la carpeta de prueba que creó anteriormente en la carpeta raíz del servidor Web en este Directorio Virtual .
  3. Haga doble clic en el sitio Web predeterminado, haga clic en pruebay, a continuación, haga clic en Propiedades.
  4. En la ficha Seguridad de directorios , haga clic en Editary, a continuación, haga clic para desactivar la casilla de verificación acceso anónimo . Asegúrese de que está activada la casilla de verificación autenticación de Windows integrada para la autenticación NTLM.
  5. Utilice el Bloc de notas para crear un archivo que se denomina Sender.asp y para crear un archivo que se denomina Receiver.asp y, a continuación, guarde estos archivos en la carpeta Test que creó anteriormente.
  6. Pegue los siguientes segmentos de código en cada archivo como sigue: Sender.asp:
    <%dim sender
    dim cookie
    'Step 1: Get the Session Cookie
    set sender = server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
    sender.open "GET", "http://localhost/test/receiver.asp?resubmit=false",false
    sender.send
    cookie = sender.getResponseHeader("Set-Cookie")

    sID = mid(cookie,instr(1,cookie,"=")+1,instr(1,cookie,";")-(instr(1,cookie,"=")+1))
    'Display the Session cookie information
    Response.Write "Response Header Information From First Request: <br/><br/>"
    Response.Write "Response Header Cookie = " & cookie & "<br/>"
    Response.write "SessionID = " & sID & "<br/><br/>"
    Response.Write "Setting Request Header Cookie as: " & left(cookie,instr(1,cookie,";")-1) & "<br/>"
    Response.Write "<br/>"

    set sender = nothing
    'Step 2: re-submit the same Session cookie back
    set sender = server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
    sender.open "POST", "http://localhost/test/receiver.asp?resubmit=true",false
    sender.setRequestHeader "COOKIE", left(cookie,instr(1,cookie,";")-1)
    sender.setRequestHeader "COOKIE", left(cookie,instr(1,cookie,";")-1)
    sender.send "<XML>Sent XML</XML>"

    'The response from the ASP page.
    Response.Write "Request Header Cookie received by receiver:</br> " & sender.responseText & "</br>"

    %>


    Receiver.asp:
    <%Response.Write "Cookie:" & Request.ServerVariables("HTTP_COOKIE")
    %>

  7. Ejecute Sender.asp desde la ubicación siguiente: http://localhost/Test/Sender.asp
Observe que faltan las cookies de receptor.
Propiedades

Id. de artículo: 326847 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios