Manual de ASP

 
 
 

Mapa Web

 
borde   borde
Portada Lista de Códigos ASP Redirigir al navegador a una URL con ASP al detalle

 

Redirigir al navegador a una URL con ASP al detalle
Notas interesantes sobre la utilización del método redirect del objeto response. Explicamos la razón de un posible error al utilizarlo y como evitarlo.

Nos ha llegado una consulta interesante que creo que no habíamos tratado con profundidad anteriormente. Se trata del método redirect del objeto response, que en determinadas situaciones da un error, que nos relataba un visitane de la siguiente manera:

Siempre trabaje en win2k e IIS para paginas ASP personales, pero ahora estoy en Win98 con PWS y las paginas que tenia funcionando en IIS con PWS me genera un error el Response.Redirect con el siguiente mensaje de error:

"Los enbezados HTTP ya están escritas en el explorador cliente. Cualquier cambio en el encabezado HTTP se debe hacer antes de escribir el contenido de la página."

Método redirect

Es un método del objeto response y sirve para mandar al navegador a una página que debe indicarse como parámetro. Un ejemplo de utilización sería:

response.redirect "tu_pagina.html"

Esto haría que nuestro navegador se situara en la página tu_pagina.html.

El redirect se realiza enviando en las cabeceras del HTTP la orden de redirección. El caso es que no se puede enviar nada en las cabeceras del HTTP si ya se ha empezado a escribir texto de la página web, aunque sea un simple espacio.

Por tanto, este código es incorrecto:

<head>
<title>Hola</title>
</head>
<%
    response.redirect "xxx.asp"
%>


Es incorrecto porque antes de hacer el redirect se ha escrito dentro de la página web, en este caso es información de cabecera, pero esta cabecera del documento HTML no es la mencionada cabecera del HTTP, que la mandan los servidores internamente sin que el programador participe activamente, salvo para introducir información como un redirect o un refresh a partir de funciones ASP.

Almacenamiento en buffer de la página

En instalaciones de ASP a partir de la 3.0 se utiliza un buffer de almacenamiento de la página que tiene como misión ir recogiendo el código HTML resultante de la ejecución de la página ASP, antes de mandarlo al cliente. El buffer se va llenando y cuando termina de ejecutarse la página se manda definitivamente por Internet hasta el ordenador del usuario.

La utilización del buffer en ASP 3.0 (IIS 5.0) se encuentra predeterminada, mientras que en otras versiones de ASP, como la del Personal Web Server (PWS), está predeterminado para no utilizarse.

Según se apunta entonces, en ASP 2.0 y anteriores se va enviando la página al cliente a medida que se va ejecutando y en ASP 3.0 hasta que no se termina de ejecutar entera, la página no se envía al cliente.

Así pues, el código anterior, donde se escribía en la página antes de ejecutar un redirect, aunque está mal diseñado en cualquier caso, puede dar error o puede no dar ningún error. Todo depende de si se había o no enviado texto al cliente previamente a la realización del redirect.

Todo esto tiene mucho que ver con el buffer, pues, si se está utilizando, no se envía nada al cliente y el redirect se realiza sin haber enviado texto, aunque sí se haya escrito en la página. Si no se utiliza el buffer el texto colocado antes del redirect sí se hubiese enviado al cliente y al ejecutar el redirect aparecería el error que nos comentaba nuestro lector.

Utilización o no del buffer

Para indicar que se desea utilizar el buffer hay que escribir esta sentencia al principio del código ASP.

response.buffer = true

Si se coloca en ASP 3.0 no sirve para nada, porque esa opción ya estaba predeterminada. Pero, en cualquier caso, no molesta y nos aseguramos que se utilizará el buffer si las páginas se trasladan a un servidor con ASP 2.0.

Si deseamos hacer un redirect después de haber escrito texto en el buffer, lo correcto sería ejecutar estas dos sentencias juntas:

response.clear response.redirect "http://www.loquesea.com"

La primera línea indica que se debe vaciar el buffer, con lo que se elimina lo que se haya escrito en la página, y la segunda indica que se haga la redirección. Insisto, esto sólo es posible si se está utilizando el buffer.

Miguel Angel Alvarez
http://www.desarrolloweb.com/articulos/1208.php?manual=11

 

 
Portada
Capítulos del Manual de ASP
Crear una Página ASP
Agregar secuencias de comandos del servidor
Combinar HTML y comandos de secuencias de comandos
Utilizar directivas ASP
Espacio en Blanco en las secuencias de comandos
Introducción a las variables
Alcance de las variables
Alcance de sesión y Alcance de aplicación
Utilizar Constantes
Interactuar con secuencias de comandos del cliente
Escribir y Definir Procedimientos
Llamar a Procedimientos
Procesar los datos proporcionados por el usuario
La colección QueryString y la colección Form
Validar los datos de los formularios
Origen de Datos
Utilizar el objeto recordset para manipular resultados
Combinar formularios y el acceso a la base de datos
Transferencia entre archivos ASP
Practicar en línea
Lista de prácticas en línea
FAQ
Preguntas frecuentes
Códigos ASP
Lista de Códigos ASP
Foros
Foros ASP
Otros Manuales
Manuales de otros lenguajes
 
   
 
 
Alojamiento web en Hostalia