ASP incorrectamente descodifica el QUERY_STRING y puede mostrar la información de ruta de Metabase

Seleccione idioma Seleccione idioma
Id. de artículo: 261116 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Síntomas

Utilizar la colección Response.QueryString para recuperar valores desde el final de una dirección URL, pero no recibe los valores esperados. Los valores devueltos en su lugar pueden ser información de metabase de Internet Information Services (IIS).

Causa

El objeto de Active Server (ASP) intrínseco Request contiene información que se envía desde el cliente al servidor en una solicitud HTTP. La colección QueryString contiene los pares de nombre/valor que aparecen al final de la dirección URL. Por ejemplo:
http://server/virtualDirectory/page.asp?name=value
				
esta información será codificados.


Por ejemplo
http://server/virtualDirectory/page.asp?name=my_value
				
aparecería como:
http://server/virtualDirectory/page.asp?name=my%5Fvalue
				
sin embargo, si el valor contiene un signo de porcentaje y un valor hexadecimal que no está asignado a un carácter válido ("5F %" se asigna a un carácter de subrayado [_]), el valor devuelto de la colección será la ruta del sitio Web en forma de una ruta de acceso de la metabase. Esto puede ser un problema cuando se imprime la variable directamente en HTML a través de Response.Write.

Por ejemplo
Response.Write Request.QueryString("name")
				
imprimirá:
LM/W3SVC/1/Root/VirtualDirectoryName
					

Solución

Para resolver este problema, obtenga el Service Pack más reciente de Windows 2000. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
260910Cómo obtener el Service Pack más reciente para Windows 2000
Para resolver este problema, puede utilizar la función Server.UrlEncode para codificar valores de cadena de consulta antes de agregarlos a la cadena de consulta.

Por ejemplo:
Response.Redirect "http://server/virtualDirectory/page.asp?name=" & Server.URLEncode("My Name ThatContains A % Sign")
				

Si imprime el valor de nombre mediante
Response.Write Request.Querystring("name")
				
en Page.asp, el resultado sería "El nombre que contiene un signo %" como se esperaba.

Estado

Microsoft ha confirmado que se trata de un problema de Microsoft Windows 2000.

Este problema se corrigió por primera vez en Windows 2000 Service Pack 1.

Propiedades

Id. de artículo: 261116 - Última revisión: lunes, 10 de febrero de 2014 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbbug kbfix kbwin2000sp1fix KB261116 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 261116

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com