Hemos visto en varios lugares cómo ASP crea o modifica los encabezados HTTP que se envían al cliente en respuesta a las solicitudes de página. Hay varias propiedades y métodos en el objeto Respuesta que pueden ayudarnos a hacer esto. Éstos son algunos métodos de encabezado:
· Controla el almacenamiento en caché y la caducidad.
· Crea estados y encabezados HTTP personalizados.
· Especifique el tipo MIME o el tipo de contenido.
· Añade etiquetas PICS.
A continuación se examinará brevemente cada uno de estos aspectos. Puede comprobar las propiedades y métodos de los que estamos hablando haciendo clic en el nombre de la propiedad o del método correspondiente en la página de inicio del "Objeto de respuesta" (show_response.asp).
1. Almacenamiento en caché y páginas web ASP "caducadas"
Los navegadores de los usuarios, así como cualquier servidor proxy entre ellos y el servidor, pueden almacenar en caché HTML y páginas web creadas con ASP. Cuando el usuario solicita posteriormente la página, el navegador envía una solicitud de "última modificación" al servidor (utilizando un encabezado HTTP_IF_MODIFIED_SINCE que contiene la fecha de la versión almacenada en caché) para preguntar si la página ha sido modificada.
Si no se ha modificado, el servidor debería responder con un código de estado y el mensaje "304 No modificado" y el navegador utilizará el contenido almacenado en caché sin descargar una copia a través de la red. Si ya existe una versión modificada, se enviará junto con el código de estado y el mensaje "200 OK".
1) Atributo Response.CacheContol
Otros factores también afectarán este proceso de procesamiento. Sin embargo, se puede evitar que cualquier servidor proxy dentro de la ruta de red utilizada por la página web (generalmente ubicado en el lado del cliente) almacene en caché la página web configurando la propiedad Response.CacheControl en Privado. En ASP 3.0, este es el valor predeterminado para las páginas web ASP y no es necesario configurarlo. Pero es especialmente útil cuando una página web está personalizada específicamente para visitantes individuales. Esto evita que otros usuarios de la misma red accedan a la misma página. Cuando el valor del atributo CacheControl se establece en Público, el servidor puede almacenar en caché páginas web. Tenga en cuenta que algunos servidores proxy pueden comportarse de manera diferente e ignorar u omitir este encabezado.
En IE4, es posible recibir un mensaje falso "Esta página ha caducado" cuando el almacenamiento en caché del servidor proxy está disponible. Hemos proporcionado una página web (expiretest_form.asp) que se puede probar en la red a través de su propio servidor proxy para comprobar el impacto de este atributo. Esta página se puede mostrar haciendo clic en el enlace "Response. CacheControl" en la página de inicio "Objeto de respuesta". Como se muestra en la siguiente figura:
cuando esta página se envía a la página web expiretest_result.asp, se puede configurar la propiedad Response.CacheControl y luego el valor y la hora en que se ejecuta el script se insertan en la página web:
<%
Si Request.Form(“public”) = “on” Entonces se marcó la casilla de verificación Control de caché
Response.CacheControl = "Público"
Demás
Response.CacheControl = "Privado"
Terminar si
%>
<HTML>
...
Cache-Control es: <B><% = Response.CacheControl %></B><P>
El valor en el cuadro de texto es: <B><% Response.Write Request.Form(“cuadro de texto”) %>
<%
Respuesta.Escribir a la derecha(“0” y hora (ahora), 2) y “:” y derecha (“0” y minuto (ahora),_
& 2) & “:” & Derecha(“0” & Segundo(Ahora),2)
%></B>
Al hacer clic en "Atrás" y "Adelante" en el navegador, puede ver si el código se ejecuta automáticamente o utiliza una copia en caché.
2) Propiedades Response.Expires y Response.ExpiresAbsolute
Las dos propiedades que controlan el tiempo de almacenamiento de las páginas web almacenadas en caché son las propiedades Expires y ExpriesAbsolute del objeto Response. Response.Expires define el período de tiempo, expresado en minutos desde su creación, que una página debe permanecer válida antes de ser descartada de la caché. El atributo ExpiresAbsolute establece una fecha y hora absolutas de vencimiento.
Proporcionamos una página web de ejemplo denominada addheaders_form.asp para demostrar cómo utilizar estos atributos. Haga clic en el enlace de ambas propiedades en la página de inicio del objeto de respuesta.
En la página resultante, puede agregar sus propios encabezados HTTP personalizados y establecer varios atributos de los encabezados HTTP que afectan la respuesta. Cuando se hace clic en el botón "Enviar contenido de consulta", la página show_headers.asp agrega los encabezados seleccionados al flujo de datos devuelto y luego muestra el código utilizado para lograr esto, mostrando el tiempo de ejecución correspondiente, que se puede usar para verificar si la página was El caché aún se ejecuta nuevamente.
El código de la página web show_headers.asp crea y agrega encabezados HTTP. El procedimiento es el siguiente:
<%.
'Escribe los encabezados HTTP antes de cualquier otra salida
Si Request.Form(“expire”) = “on” Entonces _
Respuesta.Expires = Solicitud.Form("expires_value")
Si Request.Form(“expiresabs”) = “on” Entonces _
Respuesta.ExpiresAbsolute = Solicitud.Form("expiresabs_value")
Si Request.Form("lastmod") = "on" Entonces _
Response.AddHeader “ÚLTIMA MODIFICACIÓN”, Cstr(Request.Form(“lastmod_value”))
Si Request.Form(“pragma”) = “on” Entonces _
Response.AddHeader “PRAGMA”, CStr(Request.Form(“pragma_value”))
Si Request.Form("refresh") = "on" Entonces _
Response.AddHeader “REFRESH”, CStr(Request.Form(“refresh_value”))
Si Request.Form(“addheader”) = “on” y Len(Request.Form(“addheader_name”)) Entonces _
Response.AddHeader CStr(Request.Form(“addheader_name”)), _
CStr(Solicitud.Form(“addheader_value”))
Si Request.Form("status") = "on" Entonces _
Respuesta.Estado = Solicitud.Form("status_value")
%>
<HTML>
...
...Mostrar código y tiempo de ejecución
...
el resto solo muestra el código que se ha ejecutado y cuando se ejecutó. Los lectores notarán el encabezado personalizado "PRAGMA" incluido en la página web (del que no hemos hablado hasta ahora). Algunos servidores proxy (antiguos) utilizan esto como indicación de si los discos web deben almacenarse en caché. El valor predeterminado es que las páginas se almacenen en caché a menos que se reciba el encabezado HTTP "PRAGMA=NO-CACHE".
2. Cree códigos de estado y encabezados HTTP personalizados.
Puede utilizar el método AddHeader del objeto Response que vio anteriormente en la página web de ejemplo para crear sus propios códigos de estado o encabezados personalizados que desee. Este método requiere dos parámetros: el nombre del encabezado HTTP o una cadena que contiene su valor o el valor asignado al mismo. Como ejemplo, el siguiente código agrega un encabezado REFRESH a la página:
Response.AddHeader "REFRESH", "60;URL=newpath/newpage.asp"
Esto es equivalente al elemento <META> del lado del cliente:
<META HTTP- EQUIV=" REFRESH", "60;URL=newpath/newpage.asp">
En otras palabras, también puede usar el método AddHeader con el atributo Status para hacer que el navegador cargue una nueva página:
Response.Status = "302 Objeto movido "
Response.Addheader “Location”, “newpath/newpage.asp”
Esto es equivalente a usar el método Response.Redirect:
Response.Redirect “newpath/newpage.asp”
La propiedad Response.Status se puede usar para enviar algunos mensajes de estado requeridos. por ejemplo, agregue las siguientes líneas:
Response.Status= “401 Unauthorized”
Response.Addheader “WWW-Authenticate”, “BASIC”
obliga al navegador a mostrar un cuadro de diálogo de nombre de usuario/contraseña y luego los envía de regreso al servidor usando la autenticación BÁSICA (que se tratará en este artículo (consulte los métodos de verificación más adelante en la serie).
3. Tipo MIME y tipo de contenido
Cuando queremos enviar una cadena creada dinámicamente al navegador y no indican directamente el tipo de contenido cuando se proporcionan al navegador, pero proporcionan una extensión que indica si es un archivo de disco, Respuesta .ContentType es muy útil. A menos que se especifique lo contrario, todas las páginas web creadas por ASP tienen por defecto "texto/tipo". El identificador del tipo de contenido es el tipo MIME (MIME significa Extensión multimedia de Internet multipropósito o Extensión de correo de Internet multipropósito, generalmente según el contexto).
Por ejemplo, si la anotación de datos enviada al cliente es una imagen creada leyendo valores binarios de una base de datos, debe agregar el encabezado CONTENT-TYPE apropiado antes de enviar cualquier contenido:
Response.ContentType = "image/jpeg"
Si crea una imagen a partir de una base de datos. Para archivos XML, utilice el tipo MIEM "text/xml" y si está creando un archivo de texto que pueda mostrarse en un editor de archivos o almacenarse como un archivo de disco en el cliente, utilice "texto"; /texto".
4. Agregar una etiqueta PICS
La propiedad Respnse.Pics simplemente agrega una etiqueta PICS (Plataforma para el sistema de contenido de Internet) a la página de la misma manera que la etiqueta <META> habitual:
QUOT = Chr(34)
StrPicsLabel = “(PICS-1.0” & QUOT & “http://www.rsac.org/ratingsv01.html”_
& QUOT & “1 comentario verdadero de generación” & QUOT _
& “Servidor RSACi Norteamérica” & QUOT & “ para “ & QUOT _
& “http://yoursite.com” & QUOT & “ en “ & QUOT _
& “1999.08.01T03:04-0500” & QUOT & “ r (n 0 s 0 v 2 l 3))”
Response.Pics(strPicsLabel)
Este código agrega la siguiente etiqueta PICS:
(PICS-1.0 “http://www.rsac.org/ratingsv01.html” comentario verdadero de 1 generación “RSACi
Servidor de Norteamérica” para “http://yoursite.com” en “1999.08.01T03:04-0500”
r (n 0 s 0 v 2 l 3))
Para obtener más información sobre PICS, o para aprender más sobre la forma de definir el contenido de la página, busque en el sitio http://www.rsac.org/ .
Definición de encabezados en Internet Service Manager
En la primera parte de esta serie de artículos, se explicó cómo configurar las propiedades de cada sitio web y directorio IIS 5.0 en la aplicación Internet Service Manage (complemento MMC), que define el uso. de este sitio o los recursos del directorio se envían al cliente en los encabezados HTTP de todas las solicitudes, lo que proporciona una alternativa para configurar estas propiedades utilizando código de script ASP en cada página web.
Haga clic derecho en el sitio web o directorio y seleccione "Propiedades". En la pestaña "Encabezados HTTP" de su cuadro de diálogo, puede establecer la hora relativa o la fecha absoluta para el período de validez del contenido de la página, definir encabezados personalizados y. cree etiquetas de nivel de contenido PICS, los tipos de contenido también se pueden definir mediante la asignación de tipos MIME.
Puede ver que se ha creado y aplicado un encabezado HTTP REFRESH personalizado a todas las páginas web cargadas desde este directorio. Es decir, se recarga (actualiza) automáticamente cada minuto (ideal para mostrar los últimos resultados de los juegos de béisbol, pero supone una carga demasiado pesada para el servidor).
Para agregar asignaciones de tipos de contenido personalizadas en el cuadro "Mapa MIME", simplemente haga clic en el botón "Tipos de archivo" en el cuadro de diálogo principal "Propiedades" para agregarlos a la lista.
Cuando comience a experimentar con encabezados HTTP, descubrirá rápidamente que no todos los navegadores se comportan de la misma manera y muchos navegadores responden a diferentes encabezados HTTP de diferentes maneras, lo que a veces hace que sea extremadamente difícil establecer de manera confiable un principio aplicable de manera general.
2. Utilice certificados de cliente
Si configura un sitio web seguro o un sitio con una parte segura de su contenido, puede instalar un certificado de servidor digital para autenticar el servidor permitiendo a los visitantes utilizar los detalles cifrados en el certificado. Con cada solicitud de página al sitio o directorio, el servidor envía una copia del certificado, que el navegador puede examinar para determinar con quién está hablando.
De manera similar, el servidor también se puede configurar para requerir que los usuarios proporcionen un certificado digital válido al ingresar al sitio web. Pueden obtener este certificado de muchas fuentes, como Verisign ( http://www.verisign.com ) o Thawte Consulting ( http://www.thawte.com ). El lector verá los detalles de este proceso en el Capítulo 25.
Todas estas situaciones utilizan los valores de la colección ClientCertificate del objeto Request. El código de ejemplo de este capítulo incluye una página que muestra cómo los usuarios utilizan algunos de los métodos de estos valores de colección.
Esta página se llama showcert.asp y todo lo que hace es recorrer la colección ClientCertificate y mostrar todos los valores que contiene. Se puede hacer usando el mismo código simple que siempre has usado antes, la única diferencia es crear una tabla HTML para contener los resultados y truncarlos en grupos de 60 caracteres.
<TABEL CELLPADDING=0 CELLSPACING=0>
<%
Para cada elemento clave en Request.ClientCertificate()
StrItemValue = Solicitud.ClientCertificate(elementoclave)
Si Len(strItemValue) > 90 Entonces strItemValue = Left(strItemValue, 60) & “..etc.”
Respuesta.Escriba “<TR><TD>” & keyItem & “ = “ & strItemValue & “</TD></TR>”
Próximo
%>
</TABLE>
Uso de la redirección de certificados de cliente
Una vez que a todos los visitantes de un sitio o parte de un sitio se les solicita que proporcionen su certificado de cliente, la información que contiene se puede utilizar para diseñar las páginas web que creamos para ese usuario. Por ejemplo, puede utilizar la entrada Organización de su certificado para redirigirlos automáticamente a una parte específica del sitio y redirigir a otros visitantes a otra parte:
If Request.ClientCertificate("SubjectO") = "Wrox Press Inc" Then
Response.Redirect "/wrox_staff/default.asp" 'Sitio del personal de Wrox
Demás
Response.Redirect "/public/Default.asp" 'Sitio público normal
Finalizar si
corresponde, la entrada País se puede utilizar para redirigir al visitante al sitio web correspondiente:
Seleccione Solicitud de caso.ClientCertificate("SubjectC")
Caso “Reino Unido”: Respuesta.Redirect “http://uk_site.co.uk/”
Caso “DE”: Respuesta.Redirect “http://de_site.co.de/”
Caso “FR”: Respuesta.Redirect “http://fr_site.co.fr/”
'...etc.
Otro caso: Response.Redirect “http://us_site.com/”
End Select
3. Lectura y escritura de datos binarios
Hay dos métodos que proporcionan acceso a datos binarios al flujo de datos HTTP enviado desde el navegador al servidor y al flujo de datos devuelto desde el servidor al navegador. El método Request.BinaryRead puede obtener un parámetro que especifica el número de bytes que se leerán y devuelve una matriz de tipo variante que contiene los bytes obtenidos del segmento POST solicitado (como los datos de la colección de formularios de ASP). El siguiente programa lee los primeros 64 bytes de datos:
varContent = Request.BinaryRead(64)
Si utiliza el método BinaryRead, no podrá acceder a la colección Request.Form de ASP en el futuro. Del mismo modo, una vez que hacemos referencia a la colección Request.Form de alguna manera, no podemos usar el método BinaryRead.
También es posible escribir datos binarios en el flujo de respuesta creado por ASP, utilizando el método BinaryWrite. Debe proporcionarle una matriz variante de los bytes que desea escribir en el cliente:
Response.BinaryWrite(varContent)
Estos métodos rara vez se utilizan a menos que cree una fuente que no sea HTML a partir de una base de datos. Un ejemplo de uso es leer los bytes que componen la imagen desde la base de datos y enviarla al cliente mediante el método BinaryWrite.
4. Cree un mensaje de registro personalizado
Si el servidor está configurado para registrar solicitudes en un archivo de texto en el formato de archivo de registro extendido W3C, puede usar el método Response.AppendToLog para agregar una cadena de mensaje al final de la entrada del archivo de registro. Este método es muy útil si deseas almacenar algunos valores o mensajes para una página web específica, o cuando ocurre una situación específica en el script.
Por ejemplo, a través de la aplicación de "pedidos estacionarios" de una intranet, puede registrar los números de departamento de los empleados que exceden un número específico de entradas:
...
Si intItemCount > 25 Entonces
Response.AppendToLog "Pedido grande de '" & strDept & departamento."
Terminar si
...
configurar el registro extendido
Para utilizar el método AppendToLog, se debe activar la configuración de registro del formato de archivo de registro extendido W3C. El método de configuración es ingresar a la pestaña Sitio web en el cuadro de diálogo Propiedades, seleccionar la casilla de verificación Habilitar registro, seleccionar Formato de archivo de registro extendido W3C y hacer clic en el botón Propiedades, como se muestra en la siguiente figura:
En el cuadro de diálogo Propiedades de registro extendido que Aparece. Puede seleccionar las entradas que desea incluir en el archivo de registro. Asegúrese de que URI Stem esté marcado; de lo contrario, el método AppendToLog fallará.
Hemos proporcionado una página de ejemplo simple que intenta escribir una entrada en el archivo de registro, que se puede abrir desde el enlace del método AppendToLog en la página de inicio del objeto de solicitud (show_request.asp). Todo lo que hace esta página es crear una cadena simple que contiene la fecha y hora actuales, y luego ejecutar el método AppendToLog:
strToAppend = “Página ejecutada el” & Ahora
Response.AppendToLog strToAppend
Resumen
Este artículo ha comenzado el estudio de ASP 3.0 y también hemos visto cómo ASP 3.0 funciona junto con Internet Informateion Server 5.0 para proporcionar un método eficiente y fácil de usar para crear páginas web y aplicaciones web dinámicas. . Por supuesto, todavía hay algunos lugares que deben estudiarse. Este capítulo acaba de aprender los dos objetos más básicos integrados en ASP.
Los dos objetos más básicos son los objetos Solicitud y Respuesta, que nos permiten acceder y utilizar valores como parte de una sesión cliente/servidor, lo que ocurre cada vez que un usuario solicita y carga una página o recurso de un sitio web, es decir. que el objeto Solicitud puede proporcionar acceso a todo el contenido solicitado por el usuario, mientras que el objeto Respuesta permite la creación y modificación de la respuesta enviada por el servidor.
Estos objetos exponen varias partes de la sesión a través de colecciones y propiedades, y proporcionan múltiples métodos para recuperar y modificar segmentos individuales. Si los considera herramientas para desglosar la solicitud de un usuario y crear una respuesta con el contenido adecuado, puede ayudarle a comprender lo que está sucediendo. También ayudará a comprender cómo los distintos métodos afectan al cliente, al servidor y a la página web que se está creando.