Analogía con las respuestas html. Formas locas

21.12.2021

Traducción: Vlad Merzhevich

Todo el mundo conoce los formularios web, ¿verdad? Insertamos una etiqueta, algunas quizás, lo completamos todo con un botón y listo.

No sabes ni la mitad. HTML5 define más de una docena de tipos de campos nuevos que puede utilizar en sus formularios. Y cuando digo "usar", quiero decir que se pueden usar de inmediato, sin trucos, trucos ni soluciones alternativas. No se preocupe demasiado, no estoy diciendo que todas estas nuevas funciones interesantes sean compatibles con todos los navegadores. Absolutamente no, no me refiero a todos. En los navegadores modernos, sí, sus formularios mostrarán todo lo que son capaces de hacer. Pero en navegadores más antiguos, los formularios seguirán funcionando, aunque no en todo su potencial. Es decir, estas características se degradan con gracia en cada navegador. Incluso en IE6.

Texto rápido Soporte de texto rápido
ES DECIR. Firefox Safari Cromo Ópera iPhone Androide
- 4.0+ 4.0+ 4.0+ 11.0+ 4.0+ -

La primera mejora de HTML5 con respecto a los formularios es la capacidad de establecer texto emergente en el campo de entrada. Este texto se muestra en el campo de entrada si el campo está vacío y no tiene foco. Tan pronto como hace clic en el campo de entrada (o navega hasta él a través de la pestaña), el texto de la sugerencia desaparece.

Probablemente hayas visto el texto del mensaje antes. Por ejemplo, Mozilla Firefox incluye un texto sugerente en la barra de direcciones que dice "Buscar marcadores e historial".

Cuando haces clic en la barra de direcciones, el texto de sugerencia desaparece.

A continuación le mostramos cómo puede incluir texto sugerente en sus formularios.




Los navegadores que no admiten el atributo de marcador de posición simplemente lo ignoran. Ningún daño o violación.

Pregúntele al profesor Markup

☞ P. ¿Puedo utilizar formato HTML para el atributo de marcador de posición? Quiero insertar una imagen o tal vez cambiar los colores.

R. El atributo de marcador de posición solo puede contener texto, no código HTML. Sin embargo, existen extensiones CSS especiales que le permiten configurar el estilo del texto en algunos navegadores.

Campos de enfoque automático Soporte de enfoque automático
ES DECIR. Firefox Safari Cromo Ópera iPhone Androide
- - 4.0+ 3.0+ 10.0+ - -

Los sitios web pueden utilizar JavaScript para centrarse automáticamente en el primer campo del formulario. Por ejemplo, en la página principal. google.com El campo para ingresar palabras clave de búsqueda tiene enfoque automático. Si bien esto es conveniente para la mayoría de las personas, puede resultar molesto para usuarios avanzados y personas con necesidades especiales. Si presiona la barra espaciadora mientras espera que la página se desplace, no habrá desplazamiento porque el foco está en el campo de entrada del formulario (escribirá un espacio en el campo en lugar de desplazarse). Si mueve el foco a otro campo de entrada mientras se carga la página, el script de enfoque automático del sitio puede "útilmente" mover el foco al campo de entrada original, interrumpiendo su escritura y provocando que escriba en el lugar equivocado.

Debido a que el enfoque automático funciona a través de JavaScript, puede haber dificultades para manejar estos casos extremos y pocas opciones para aquellas personas que no quieren que una página web les "robe" el enfoque.

Para resolver estos problemas, HTML5 introduce el atributo de enfoque automático para todos los elementos del formulario. El atributo de enfoque automático hace exactamente lo que parece: tan pronto como se carga la página, mueve el foco al campo especificado. Pero como esto es solo un marcado y no un script, el comportamiento será consistente en todos los sitios. Además, los fabricantes de navegadores (o autores de extensiones) pueden ofrecer a los usuarios una forma de desactivar el enfoque automático.

A continuación se explica cómo configurar un campo de formulario para que se enfoque automáticamente.




Los navegadores que no admitan el atributo de enfoque automático lo ignorarán.

¿Qué ha pasado? ¿Supongamos que desea que el enfoque automático funcione en todas partes, no solo en sofisticados navegadores HTML5? Puedes mantener el script de enfoque automático actual, solo haz dos pequeños cambios:

  • agregue el atributo de enfoque automático al código HTML;
  • Compruebe si el navegador admite el atributo de enfoque automático y, en caso contrario, ejecute su propio script.

Enfoque automático con alternativa




if (!("enfoque automático" en document.createElement("entrada")) ) (
document.getElementById("q").focus();
}


Establecer el enfoque temprano

Muchas páginas web esperan a que se active window.onload y establezca el foco. Pero el evento window.onload no se activará hasta que se hayan cargado todas las imágenes. Si su página tiene muchas imágenes, estos scripts ingenuos potencialmente cambiarán de enfoque después de que el usuario haya comenzado a interactuar con otra parte de su página. Esta es la razón por la que los usuarios avanzados odian los scripts de enfoque automático.

Por ejemplo, en la sección anterior, el script de enfoque automático se colocó inmediatamente después del campo del formulario al que hacía referencia. Esta es la solución óptima, pero puede ofender su sensibilidad al colocar un bloque de código JavaScript en el medio de la página (o, más mundanamente, su sistema puede no ser tan flexible). Si no puede insertar un script en el medio de la página, debe establecer el foco mediante un evento personalizado como $(document).ready() en jQuery en lugar de window.onload.

Enfoque automático mediante jQuery




$(documento).listo(función() (

$("#q").enfoque();
}
});






El evento personalizado de jQuery se activa tan pronto como se puede acceder al DOM, es decir, espera a que se cargue el texto de la página, pero no espera a que se carguen todas las imágenes. Este no es un enfoque óptimo: si la página es inusualmente grande o la conexión de red es lenta, es posible que el usuario aún esté interactuando con la página antes de que se ejecute el script de enfoque. Pero sigue siendo mucho mejor que esperar a que ocurra el evento window.onload.

Si está de acuerdo y está dispuesto a insertar un script de una sola declaración en el código de su página, este es un compromiso menos desagradable que la primera opción y mejor que la segunda. Puede utilizar eventos personalizados de jQuery para configurar sus propios eventos, por ejemplo autofocus_ready. Luego podrá activar este evento manualmente tan pronto como el campo de enfoque automático esté disponible. Gracias a E.M. Shtenberg por enseñarme esta técnica.

Enfoque automático con evento personalizado alternativo




$(documento).bind("autofocus_ready", función() (
if (!("enfoque automático" en document.createElement("entrada"))) (
$("#q").enfoque();
}
});





$(documento).trigger("autofocus_ready");

Esta solución es óptima, al igual que el primer enfoque. El foco se establecerá en el campo del formulario tan pronto como sea técnicamente posible mientras el texto de la página aún se esté cargando. Parte de la lógica de la aplicación (enfoque en el campo del formulario) se ha movido del cuerpo de la página a la sección. Este ejemplo se basa en jQuery, pero el concepto de eventos personalizados no es exclusivo de jQuery. Otras bibliotecas de JavaScript como YUI y Dojo ofrecen capacidades similares.

Resumamos.

  • Establecer el enfoque correctamente es importante.
  • Si es posible, haga que el navegador utilice el atributo de enfoque automático en el campo donde desea enfocar.
  • Si está utilizando código alternativo para navegadores más antiguos, defina la compatibilidad con el atributo de enfoque automático para que el script solo se ejecute en navegadores más antiguos.
  • Establezca el enfoque lo antes posible. Inserte el script de enfoque en el código inmediatamente después del campo del formulario. Si esto no le molesta, incruste una biblioteca de JavaScript que admita eventos personalizados y genere el evento en el código inmediatamente después del campo del formulario. Si esto no es posible, utilice un evento como $(document).ready() de jQuery.
  • Bajo ninguna circunstancia debe esperar a que window.onload se enfoque.
Correos electrónicos

Durante más de una década, los formularios han contenido sólo unos pocos tipos de campos. Los más comunes son los siguientes.

Todos estos tipos de campos todavía funcionan en HTML5. Si "actualiza a HTML5" (quizás cambiando !DOCTYPE ), no tendrá que realizar ni un solo cambio en sus formularios. ¡Bien por la compatibilidad con versiones anteriores!

Sin embargo, HTML5 define 13 nuevos tipos de campos y no hay razón para no empezar a utilizarlos.

El primero de estos nuevos tipos de direcciones de correo electrónico. Se parece a esto.





Iba a escribir una oración que comenzaba "en navegadores que no admiten type="email"..." pero se detuvo. ¿Por qué? Porque no estoy seguro de si los navegadores no admiten type="email" . Todos los navegadores "soportan" type="email" . Puede que no hagan nada especial, pero los navegadores que no reconocen type="email" lo tratarán como type="text" y lo representarán como un campo de texto normal.

Haré hincapié en lo importante que es esto. Hay millones de formularios en Internet que le solicitan que ingrese su dirección de correo electrónico y todos usan . Verá un cuadro de texto, ingrese su dirección de correo electrónico y listo. Y luego viene HTML5, que define type="email" . ¿Se están volviendo locos los navegadores? No. Todos los navegadores del mundo tratan el atributo de tipo desconocido como tipo="texto", incluso IE6. Así que puedes "actualizar" tus formularios usando type="email" ahora mismo.

¿Qué pasa si decimos que el navegador admite type="email"? Bueno, podría significar cualquier cosa. La especificación HTML5 no requiere ninguna interfaz de usuario específica para los nuevos tipos de campos. Opera agrega un pequeño icono al campo del formulario. Otros navegadores HTML5 como Safari y Chrome se muestran como un campo de texto, igual que type="text", para que los usuarios no noten la diferencia (hasta que miren el código fuente).

Y luego está el iPhone.

El iPhone no tiene un teclado físico. Todo "escribir" se realiza haciendo clic en el teclado en pantalla que aparece en el momento adecuado, por ejemplo, cuando accede a un campo de formulario en una página web. Apple hizo algo inteligente con el navegador del iPhone. Reconoce algunos campos HTML5 nuevos y cambia dinámicamente el teclado en pantalla para optimizar la entrada.

Por ejemplo, una dirección de correo electrónico es texto, ¿verdad? Por supuesto, pero este es un tipo especial de texto. Por lo tanto, casi todas las direcciones de correo electrónico contienen el símbolo @ y al menos un punto (.), pero es poco probable que contengan un espacio. Entonces, cuando estés usando un iPhone y vayas a , obtendrás un teclado en pantalla que incluye una barra espaciadora más pequeña, así como teclas dedicadas para los símbolos. Y @.

Déjame resumirlo. No hay ningún inconveniente en convertir inmediatamente todos los campos de su correo electrónico a type="email" . Casi nadie se dará cuenta de esto excepto los usuarios de iPhone, quienes probablemente tampoco lo notarán. Pero aquellos que se den cuenta sonreirán en silencio y le agradecerán por hacer su trabajo un poco más fácil.

Direcciones web

Una dirección web (que los expertos en estándares llaman URL, excepto unos pocos pedantes que la llaman URI) es otro tipo de texto especializado. La sintaxis de una dirección web está limitada al estándar de Internet correspondiente. Si alguien le pide que ingrese una dirección web en un formulario, esperará algo como "http://www.google.com/", no "125 Farwood Road". Las barras diagonales son comunes; incluso la página de inicio de Google tiene tres. Los puntos también son comunes, pero los espacios están prohibidos. Y cada dirección web tiene un sufijo de dominio como ".com" u ".org".

Y así... (redoble de tambores por favor)... . En iPhone se ve así.

El iPhone ha rediseñado su teclado virtual tal como lo hizo para el correo electrónico, pero ahora lo optimiza para escribir una dirección web. La barra espaciadora ha sido completamente reemplazada por tres teclas virtuales: barra diagonal, punto y ".com" (puede mantener presionada la tecla ".com" para seleccionar un sufijo diferente como ".org" o ".net").

Los navegadores que no soportan HTML5 tratarán type="url" como type="text" , por lo que no hay ningún inconveniente en usar este tipo para todos los campos donde necesites ingresar una dirección web.

Números como contadores

Siguiente paso: números. Solicitar un número es más complejo que solicitar un correo electrónico o una dirección web. En primer lugar, los números son más complejos de lo que piensas. Seleccione rápidamente un número. -1? No, me refiero a un número entre 1 y 10,7 ½. No, no, no seas fracción, estúpido. π? Ahora acabas de elegir un número irracional.

Me gustaría señalar que no es frecuente que le pregunten "sólo un número". Es más probable que le pidan un número dentro de un rango determinado. Es posible que sólo desees ciertos tipos de números dentro de ese rango, tal vez enteros, pero no fracciones ni decimales ni algo más exótico como múltiplos de 10. HTML5 cubre todo esto.

Elige un número, casi cualquiera

Veamos un atributo a la vez.

  • type="number" significa que se trata de un campo numérico.
  • min="0" especifica el valor mínimo permitido para este campo.
  • max="10" es el valor máximo permitido.
  • step="2" en combinación con el valor mínimo define los números válidos en el rango: 0, 2, 4 y así sucesivamente, hasta el valor máximo.
  • value="6" es el valor predeterminado. Debería resultar familiar, este es el mismo atributo que siempre se usa para definir los valores de los campos de formulario. Menciono esto aquí como punto de partida: HTML5 se basa en versiones anteriores de HTML. No es necesario que vuelvas a aprender a hacer lo que ya has hecho.

Este es el código para un campo numérico. Tenga en cuenta que todos estos atributos son opcionales. Si tiene un mínimo pero no un máximo, puede especificar el atributo mínimo pero no el atributo máximo. El valor de paso predeterminado es 1 y puede omitir el atributo de paso hasta que se necesite un valor de paso diferente. Si no hay un valor predeterminado, entonces el atributo de valor puede ser la cadena vacía o incluso omitirse por completo.

Pero HTML5 no se detiene ahí. Por el mismo bajo precio de libertad, obtienes estas prácticas técnicas de JavaScript.

  • input.stepUp(n) incrementa el valor del campo en n.
  • input.stepDown(n) reduce el valor del campo en n.
  • input.valueAsNumber devuelve el valor actual como un número de punto flotante (la propiedad input.value es siempre una cadena).

¿Problemas de visualización? Bueno, la interfaz correcta para administrar números se implementa de manera diferente en los navegadores. En el iPhone, donde escribir es difícil, el navegador optimiza nuevamente el teclado virtual para ingresar números.

En la versión de escritorio de Opera, el campo tipo="número" aparece como un contador con pequeñas flechas hacia arriba y hacia abajo en las que puede hacer clic para cambiar los valores.

Opera respeta los atributos min, max y step, por lo que siempre conseguirás un valor numérico aceptable. Si aumenta el valor al máximo, la flecha hacia arriba en el contador se vuelve gris.

Al igual que con todos los demás campos de entrada que he analizado en este capítulo, los navegadores que no admiten type="number" lo tratarán como type="text" . El valor predeterminado se mostrará en el campo (tal como está almacenado en el atributo de valor), pero se ignorarán otros atributos como mínimo y máximo. Puede implementarlos usted mismo o utilizar un marco de JavaScript que ya implemente la gestión de contadores. Consulte aquí primero.

si (! .tipos de entrada.número) (
// no hay soporte nativo para el campo tipo=número
// podría probar Dojo u otro marco de JavaScript
}

Números como control deslizante

Un contador no es la única forma de representar la entrada de números. Probablemente también hayas visto un control deslizante similar a este.

Ahora también puedes tener un control deslizante en el formulario. El código se parece extrañamente a un campo de contador.


Todos los atributos disponibles son los mismos que para type="number" (min, max, step, value) y significan lo mismo. La única diferencia es la interfaz de usuario. En lugar de un campo de entrada, se espera que los navegadores muestren type="range" como un control deslizante. Al momento de escribir este artículo, las últimas versiones de Safari, Chrome y Opera funcionan con esto. Desafortunadamente, el iPhone se muestra como un simple campo de texto; ni siquiera optimiza su teclado en pantalla para ingresar números. Todos los demás navegadores simplemente tratan el campo como type="text" , por lo que no hay razón para empezar a utilizar este tipo inmediatamente.

HTML 4 no incluye selección de fecha vía calendario. Los marcos de JavaScript le permiten solucionar esto (Dojo, jQuery UI, YUI, biblioteca de cierre), pero, por supuesto, cada una de estas soluciones requiere "implementar" el marco para cualquier calendario integrado.

HTML5 finalmente define una forma de habilitar selectores de fechas nativos sin necesidad de secuencias de comandos. En realidad, hay seis: fecha, mes, semana, hora, fecha + hora y fecha + hora con zona horaria.

Hasta ahora, el apoyo es... escaso.

Soporte para selector de fechas Escribe Opera Otros navegadores
tipo="fecha" 9.0+ -
tipo="mes" 9.0+ -
tipo="semana" 9.0+ -
tipo="hora" 9.0+ -
tipo="fechahora" 9.0+ -
tipo="fechahora-local" 9.0+ -

Así es como se muestra Opera:

Si necesita la hora junto con la fecha, Opera también admite:

Si necesita un mes más un año (por ejemplo, la fecha de vencimiento de una tarjeta de crédito), Opera puede mostrar:

Menos común, pero disponible, es seleccionar la semana del año a través de:

Por último, pero no menos importante, está el tiempo con:

Selector de fechas con alternativa




...

var i = document.createElement("entrada");
i.setAttribute("tipo", "fecha");
if (i.tipo == "texto") (
// No hay soporte para el selector de fechas nativo :(
// Usa Dojo/jQueryUI/YUI/Closure para crearlo,
// luego reemplazamos dinámicamente el elemento
}

Es probable que otros navegadores eventualmente admitan estos tipos. Al igual que type="email" y otros tipos, estos campos de formulario aparecerán como texto sin formato en navegadores que no reconocen type="date" y sus variantes. Si lo desea, puede utilizar , hacer felices a los usuarios de Opera y esperar a que otros navegadores se pongan al día. Es más realista usar esto, pero verifique si el navegador tiene soporte nativo para el selector de fechas e incluya una solución alternativa en forma de script de su elección (Dojo, jQuery UI, YUI, biblioteca de cierre u otras opciones).

ventana de búsqueda

Entonces, busca. No sólo búsquedas en Google o Yahoo (bueno, esas también). Piense en cualquier cuadro de búsqueda, en cualquier página, en cualquier sitio web. Amazon tiene un cuadro de búsqueda, Yandex tiene un cuadro de búsqueda y la mayoría de los blogs también lo tienen. ¿Cómo se hacen? , como cualquier otro campo de texto en la web. Arreglemos esto.

Búsqueda de una nueva generación




En algunos navegadores no notarás ninguna diferencia con respecto a un campo de texto normal. Pero si estás usando Safari en Mac OS X, se verá así.

¿Encontraste la diferencia? ¡El campo de entrada tiene esquinas redondeadas! Lo sé, lo sé, apenas puedes contener tus sentimientos. ¡Pero espera hay mas! Cuando empieces a escribir type="search" en el campo, Safari insertará un pequeño botón "x" en el lado derecho de la ventana. Al hacer clic en la "x" se borra el contenido del campo. Google Chrome, que tiene la misma tecnología bajo el capó, se comporta de la misma manera. Ambos pequeños trucos se ven y se comportan de manera similar a la búsqueda nativa en iTunes y otras aplicaciones cliente de Mac OS X.

Apple.com utiliza la búsqueda de sitios para ayudar a que el sitio transmita una sensación de "amor de guacamayos". Pero aquí no hay nada específico para Mac. Es solo código, por lo que cada navegador en cada plataforma puede elegir cómo renderizar de acuerdo con las convenciones de la plataforma. Al igual que con todos los demás tipos nuevos, los navegadores que no reconocen type="search" lo tratarán como type="text", por lo que no hay absolutamente ninguna razón para no comenzar a usar type="search" para todos sus cuadros de búsqueda hoy.

El profesor Markup dice

De forma predeterminada, Safari no aplica la mayoría de los estilos. Si desea obligar a Safari a tratar el campo de búsqueda como un campo de texto normal (para que pueda aplicar sus propios estilos), agregue esta regla a su hoja de estilos.

aporte(
-apariencia del kit web: campo de texto;
}

Gracias a John Lane por enseñarme este truco.

selección de color

HTML5 también define un campo que le permite seleccionar un color y lo devuelve en hexadecimal. Ningún navegador admite selectores de color, lo cual es una pena porque siempre me han encantado las paletas de Mac OS. Tal vez algun dia.

Nota traductor Opera 11 admite esta función.

Validación de formulario

En este capítulo, hablé sobre nuevos elementos de formulario y nuevas características como el enfoque automático, pero no mencioné quizás la parte más interesante de los formularios HTML5: la validación automática de entradas. Veamos los problemas comunes al ingresar una dirección de correo electrónico en un formulario. Probablemente tenga una validación del lado del cliente a través de JavaScript, seguida de una validación del lado del servidor a través de PHP, Python u otro lenguaje del lado del servidor. HTML5 nunca reemplazará la validación del lado del servidor, pero algún día podría reemplazar la validación del lado del cliente.

Hay dos grandes problemas con la validación de direcciones de correo electrónico en JavaScript:

  • Una pequeña cantidad de sus visitantes (probablemente alrededor del 10%) no tienen JavaScript habilitado.
  • Recibirás la dirección incorrecta.
  • En serio, te equivocarás con la dirección. Determinar que un conjunto de caracteres aleatorios es una dirección de correo electrónico válida es increíblemente difícil. Cuanto más miras, más difícil se vuelve. ¿Mencioné que esto es muy, muy difícil? ¿No es más fácil colgar este dolor de cabeza en tu navegador?

    Comprobaciones de Opera tipo="correo electrónico"

    Aquí hay una captura de pantalla de Opera 11, aunque la funcionalidad ha estado presente desde Opera 9. El código implica configurar el valor de correo electrónico para el atributo de tipo. Cuando un usuario de Opera intenta enviar un formulario con , el navegador comprueba automáticamente la dirección de correo electrónico, incluso si los scripts están deshabilitados.

    HTML5 también ofrece validación de direcciones web con campos y números con . La validación de números tiene en cuenta los valores de los atributos mínimo y máximo, por lo que los navegadores no le permitirán enviar el formulario si ingresa un número demasiado grande.

    No existe ningún código que permita la validación de formularios en HTML5, se realiza de forma predeterminada. Para deshabilitar la validación, utilice el atributo novalidate.

    no me pongas a prueba




    Los navegadores han tardado en incluir soporte para la validación de formularios en HTML5. Firefox 4 tendrá soporte total. Desafortunadamente, Safari y Chrome sólo están implementados parcialmente: validan los elementos del formulario, pero no muestran ningún mensaje visible cuando un campo del formulario no pasa la validación. En otras palabras, si ingresa una fecha incorrecta (o mal escrita) en type="date" , Safari y Chrome no enviarán el formulario, pero no le dirán por qué no lo hicieron. Establecerán el foco en el campo que contiene un valor no válido, pero no mostrarán un mensaje de error como Opera o Firefox 4.

    Campos requeridos Apoyo
    ES DECIR. Firefox Safari Cromo Ópera iPhone Androide
    - 4.0+ - - 9.0+ - -

    La validación de formularios en HTML5 no se limita al tipo de cada campo. También puede especificar que algunos campos sean obligatorios; dichos campos deben tener un valor antes de poder enviar el formulario.

    El código para los campos obligatorios es tan simple como puede ser.




    Los navegadores pueden cambiar la apariencia original de un campo obligatorio. Aquí hay un ejemplo de cómo se ve en Mozilla Firefox 4.0.

    Además, si intenta enviar un formulario sin completar un valor requerido, Firefox mostrará una barra de información que indica que el campo es obligatorio y no puede estar vacío.

    Después de recibir e interpretar un mensaje de solicitud, un servidor responde con un mensaje de respuesta HTTP:

    • Una línea de estado
    • Cero o más campos de encabezado (General|Respuesta|Entidad) seguidos de CRLF
    • Una línea vacía (es decir, una línea sin nada antes del CRLF) que indica el final de los campos del encabezado
    • Opcionalmente un cuerpo de mensaje
    • Cada una de las siguientes secciones explica las entidades utilizadas en un mensaje de respuesta HTTP.

      Línea de estado del mensaje

      Una línea de estado consta de la versión del protocolo seguida de un código de estado numérico y su frase textual asociada. Los elementos están separados por caracteres SP de espacio.

    Línea de estado = Versión HTTP SP Código de estado SP Frase de motivo CRLF Versión HTTP

    Un servidor que admita HTTP versión 1.1 devolverá la siguiente información de versión:

    Versión HTTP = HTTP/1.1

    Código de estado

    El elemento Código de estado es un número entero de 3 dígitos donde el primer dígito del Código de estado define la clase de respuesta y los dos últimos dígitos no tienen ninguna función de categorización. Hay 5 valores para el primer dígito:

    SN Código y descripción
    1 1xx: informativo

    Significa que la solicitud fue recibida y el proceso continúa.

    2 2xx: Éxito

    Significa que la acción fue recibida, comprendida y aceptada con éxito.

    3 3xx: Redirección

    Significa que se deben tomar más medidas para completar la solicitud.

    4 4xx: Error del cliente

    Significa que la solicitud contiene una sintaxis incorrecta o no se puede cumplir.

    5 5xx: Error del servidor

    Significa que el servidor no cumplió con una solicitud aparentemente válida.

    Los códigos de estado HTTP son extensibles y no es necesario que las aplicaciones HTTP comprendan el significado de todos los códigos de estado registrados. Se proporciona una lista de todos los códigos de estado en un capítulo separado para su referencia.

    Campos de encabezado de respuesta

    Estudiaremos el encabezado general y el encabezado de entidad en un capítulo separado cuando aprendamos los campos de encabezado HTTP. Por ahora, veamos qué son los campos del encabezado de respuesta.

    Los campos del encabezado de respuesta permiten al servidor pasar información adicional sobre la respuesta que no se puede colocar en la línea de estado. Estos campos de encabezado brindan información sobre el servidor y sobre el acceso adicional al recurso identificado por el URI de solicitud.

    • Autenticar por proxy

    • WWW-autenticar

    Puede introducir sus campos personalizados en caso de que vaya a escribir su propio Cliente y Servidor Web personalizado.

    Ejemplos de mensaje de respuesta

    Ahora juntemos todo para formar una respuesta HTTP para una solicitud para recuperar la página hello.htm del servidor web que se ejecuta en el sitio.

    HTTP/1.1 200 OK Fecha: lunes, 27 de julio de 2009 12:28:53 GMT Servidor: Apache/2.2.14 (Win32) Última modificación: miércoles, 22 de julio de 2009 19:15:56 GMT Longitud del contenido: 88 Contenido Tipo: texto/html Conexión: Cerrada ¡Hola mundo!

    El siguiente ejemplo muestra un mensaje de respuesta HTTP que muestra una condición de error cuando el servidor web no pudo encontrar la página solicitada:

    HTTP/1.1 404 No encontrado Fecha: domingo, 18 de octubre de 2012 10:36:20 GMT Servidor: Apache/2.2.14 (Win32) Longitud del contenido: 230 Conexión: cerrada Tipo de contenido: texto/html; charset=iso-8859-1 404 No encontrado No encontrado

    La URL solicitada /t.html no se encontró en este servidor.

    El siguiente es un ejemplo de mensaje de respuesta HTTP que muestra una condición de error cuando el servidor web encontró una versión HTTP incorrecta en la solicitud HTTP dada:

    HTTP/1.1 400 Solicitud incorrecta Fecha: domingo, 18 de octubre de 2012 10:36:20 GMT Servidor: Apache/2.2.14 (Win32) Longitud del contenido: 230 Tipo de contenido: texto/html; charset=iso-8859-1 Conexión: Cerrada 400 Solicitud incorrecta Solicitud incorrecta

    Su navegador envió una solicitud que este servidor no pudo entender.

    La línea de solicitud contenía caracteres no válidos después de la cadena del protocolo.

    Este artículo ofrece un resumen de las respuestas que una organización o proyecto puede tomar para gestionar un riesgo. El riesgo se puede definir como la incertidumbre del resultado, ya sea positivo ( una oportunidad) o negativo ( una amenaza). La gestión del riesgo es fundamental para el éxito del proyecto y es tarea de gestión de riesgos para gestionar la exposición al riesgo de un proyecto ().

    La respuesta a un riesgo determinado debe reflejar el tipo de riesgo, la evaluación de riesgos(probabilidad, impacto, criticidad) y la actitud de la organización ante el riesgo. Hay varias respuestas posibles a los riesgos y, como los riesgos pueden ser amenazas o oportunidades Estos incluyen respuestas que son adecuadas para posibles oportunidades. Las respuestas se resumen en la siguiente tabla.

    Tabla de respuestas al riesgo
    Respuesta a los riesgos Descripción/ejemplo

    Adecuado para…. tipos de riesgo (estas son sugerencias y no exhaustivas)

    Amenazas
    Evitar

    El riesgo se evita cambiando el proyecto de alguna manera para evitar el riesgo.

    Algunos riesgos políticos, p. opinión pública adversa Algunos riesgos técnicos/operativos/de infraestructura, p. problemas de mantenimiento. Riesgos legales y regulatorios, p. controles regulatorios, requisitos de licencia.

    Transferir

    Algunos riesgos estratégicos/comerciales, p. Se puede asegurar contra el robo y la insolvencia. Ver riesgos empresariales para más ejemplos.

    Reducir

    Se toman medidas para reducir la probabilidad de que ocurra el riesgo o el impacto que tendrá.

    La respuesta al riesgo más utilizada.

    Ampliamente aplicable: técnico/operativo/infraestructura, p. negligencia, fracaso en el desempeño, "desplazamiento" del alcance, expectativas poco claras.

    Factores organizativos/de gestión/humanos, p. Choques de personalidad, liderazgo deficiente y mala selección de personal.

    Es posible que sea necesario aceptar algunos riesgos políticos, legales, regulatorios y económicos/financieros con una estrategia vigente, por ejemplo. guerra y desorden, fluctuación del tipo de cambio.

    Contingencia Aquí se pone en marcha un plan para responder si el riesgo se materializa.

    Económico/financiero/mercado
    Político
    Legal y regulatorio

    Podría decirse que todos los riesgos pueden y deben contar con un plan de contingencia.

    Oportunidades
    Compartir Se comparte una oportunidad con un socio o proveedor para maximizar los beneficios mediante el uso de recursos/tecnología compartidos, etc. Técnica/operacional/infraestructura, p.e. Nueva tecnología, diseños mejorados.
    Explotar Un proyecto podría ajustarse para aprovechar un cambio de tecnología o un nuevo mercado. Económico/financiero/de mercado, p.e. mercados nuevos y emergentes, cambios positivos en los tipos de cambio o tipos de interés.
    Mejorar Se toman medidas para aumentar la probabilidad de que ocurra la oportunidad o el impacto positivo que podría tener. Oportunidades estratégicas/comerciales como nuevas asociaciones, nuevas inversiones de capital, nuevos promotores.
    Rechazar Aquí no se toma ninguna medida y se rechaza la posibilidad de sacar provecho de la oportunidad. podrán implementarse si se presenta la oportunidad. Político o ambiental, p.e. nuevas conexiones de transporte, cambio de gobierno que trae consigo cambios positivos en las políticas/oportunidades para ejercer presión, etc.

    Los planes de contingencia deben identificar las acciones que se tomarán si ocurre un riesgo. Las acciones contingentes a menudo tendrán un costo asociado y se debe reservar un presupuesto en el caso de negocio para cubrir esto. ¡Los 50 principales riesgos empresariales y cómo gestionarlos! 20 riesgos comunes de proyectos: ejemplo de registro de riesgos Lista de verificación de 30 riesgos de la construcción Respuestas al riesgo: referencias Oficina de Comercio Gubernamental(2002), Gestión de proyectos exitosos con PRINCE2, Londres: TSO.

    The Projects Group PLC, 2006, Descripción general de la gestión de riesgos, Sutton: The Projects Group plc.

    El objeto descrito es una herramienta muy útil y poderosa. Este objeto tiene varios métodos, su descripción se proporciona a continuación:

    Colecciones: Métodos: Propiedades: Respuesta.Recolección de cookies

    La colección Cookies establece valores para las cookies. Si las cookies especificadas no existen, las crea. Si la cookie existe, adquiere un nuevo valor y destruye el anterior.

    Respuesta.Cookies(cookie) [(clave) | . atributos ] = valor

    Opciones:

    • galleta - nombre de la galleta
    • clave: parámetro opcional. Si se especifica, entonces la cookie es un directorio (anidado) y la clave es un conjunto de valores.
    • atributos: información especificada sobre las propias cookies. Este parámetro puede ser uno de los siguientes:
    • valor: especifica el valor que se asignará a esta clave o atributo.
    NombreDescripción
    DominioSólo grabación. Si se especifica, las cookies se envían únicamente a petición de este dominio.
    VenceSólo grabación. La fecha en la que caduca la cookie. Esta fecha debe establecerse para que las cookies se escriban en el disco duro del cliente una vez finalizada la sesión. Si este atributo no está configurado, se supone que la fecha de vencimiento de la cookie es la fecha actual. Las cookies caducan inmediatamente después del final de la sesión.
    Tiene claveSólo lectura. Indica si la cookie contiene la clave proporcionada.
    CaminoSólo grabación. Si se especifica, las cookies solo se envían previa solicitud desde esta ruta. Si el parámetro no está configurado, se utiliza la ruta a la aplicación.
    SeguroSólo grabación. Indica si las cookies estarán protegidas o no.

    Comentario:

    Si la cookie clave se crea como se muestra en el siguiente script,

    entonces se enviará el siguiente encabezado:

    Set-Cookie:MYCOOKIE=TYPE1=azúcar&TYPE2=galletas

    Si asigna un valor a mycookie sin usar claves, esta acción destruirá las claves tipo1 y tipo2. P.ej:

    En el ejemplo anterior, las claves tipo1 y tipo2 se destruirán y se perderán sus valores. Mycookie ahora contendrá el valor malvavisco de chocolate.

    También puedes comprobar la existencia de una clave específica de la siguiente forma:

    Si se muestra VERDADERO, entonces dicha clave existe; si es FALSO, no existe.

    Método Response.Write

    Respuesta.Escribir variable_o_valor

    Opciones:

    • variable_or_value: datos que se mostrarán en la pantalla del navegador a través de HTML. Este parámetro puede ser de cualquier tipo admitido por VisualBasic Scripting Edition. Es decir, los datos pueden ser de los siguientes tipos: fecha, cadena, carácter, valores numéricos. El valor de este parámetro no puede contener la combinación %>. En su lugar, puede utilizar la combinación equivalente %\>. El servidor web convertirá esta secuencia en la requerida cuando se ejecute el script.

    El siguiente ejemplo muestra cómo funciona el método Response.write para enviar un mensaje al cliente.

    Sólo te diré: Y tu nombre

    El siguiente ejemplo agrega una etiqueta HTML a una página web. Como este método no puede contener la combinación %>, usamos la secuencia %\>. Entonces, un script de ejemplo:

    La salida será la línea:

    Método Response.Redirect

    Response.Redirect URL (URL - Localizador uniforme de recursos)

    Opciones:

    • URL: el parámetro es un descriptor de recurso universal. Muestra cuándo es necesario redirigir el navegador.

    Comentario:

    Se ignorará cualquier aparición de este método entre las etiquetas y la página web. Este método sólo se puede utilizar en el encabezado de una página HTML. Este método pasará un encabezado al navegador si falta el parámetro URL de este objeto en el siguiente formulario:

    HTTP/1.0 302 URL de ubicación del objeto movido

    Método Response.End

    Respuesta.Fin

    Comentario:

    Si la propiedad Response.Buffer se estableció en TRUE, llamar al método Response.End borrará el búfer y enviará los datos al cliente. Si no desea enviar datos al usuario, debe llamar al siguiente método:

    Método Response.AddHeader

    El método AddHeader agrega un encabezado HTML con valores específicos. Este método siempre agrega un nuevo encabezado a la respuesta al navegador del cliente. Este método no reemplaza el encabezado existente por uno nuevo. El encabezado agregado no se puede eliminar.

    Este método se utiliza sólo para tareas "avanzadas".

    Response.AddHeader nombre_variable, valor

    Opciones:

    • nombre_variable: el nombre de los nuevos parámetros del encabezado HTML.
    • valor: establece el valor que se recordará en el encabezado.
    Notas:

    Para que el método funcione correctamente, el nombre_variable no debe contener el carácter de subrayado (_). El conjunto ServerVariables interpreta el guión bajo como un guión en el encabezado. Como ejemplo, el siguiente script obliga al servidor a buscar un parámetro del encabezado HTML llamado MY-HEADER.

    Dado que el protocolo HTTP requiere que todos los parámetros del encabezado se pasen antes del cuerpo de la página HTML, debe llamar al método AddHeader en su secuencia de comandos antes de que comience la descripción.... Hay una excepción. Si la propiedad Buffer está establecida en verdadero, entonces puede escribir AddHeader en cualquier parte del script, pero antes de la primera llamada al método Flush. De lo contrario, llamar al método AddHeader generará un error.

    Los siguientes dos archivos .ASP demuestran este último punto.

    tu texto en la página

    En este ejemplo, la página no está almacenada en el búfer. El script funciona sin embargo se llama a AddHeader antes de que el servidor produzca una salida HTML para el cliente.

    aqui te dejo informacion de tu pagina...

    En el segundo ejemplo, la página se almacena en el búfer y, como resultado, el servidor no envía texto al cliente hasta que finaliza el script o se encuentra el método Flush. Puede utilizar este método para enviar varias copias de algún parámetro de encabezado con diferentes valores, como con el encabezado WWW-Authenticate.

    Método Response.AppendToLog

    El método AppendToLog agrega una línea al final del archivo de informe (archivo de registro) del servidor web. Puedes llamar a este método tantas veces como necesites. Cada vez que llame al método, la cadena que especifique se escribirá en el archivo de informe del servidor.

    Valor de Response.AppendToLog

    Opciones:

    • valor: texto que se agregará al archivo de informe del servidor web. Esta cadena no puede contener el carácter de coma (,). Además, la longitud total de la línea añadida no debe exceder los 80 caracteres.
    Notas:

    Para utilizar esta función, debe tener habilitada la opción Consulta de URI en el panel "Propiedades de registro avanzadas" para este servidor web en IIS.

    Método Response.BinaryWrite

    El método BinaryWrite le permite escribir información específica en la salida HTTP actual sin ninguna conversión de caracteres. Este método es útil para generar información que no es una cadena, como datos binarios requeridos por una aplicación.

    Respuesta.BinaryWrite datos

    Opciones:

    • datos: datos destinados a la salida HTTP.

    Si tiene un objeto que produce una matriz de bytes, puede usar la siguiente llamada a este método para pasar esa matriz a alguna aplicación que se ejecute en la máquina cliente.

    Respuesta. Método claro

    El método Clear borra toda la salida HTML almacenada en el buffer. Sin embargo, este método no borra la información del búfer asociada con el encabezado. Puede utilizar este método para gestionar errores. Sin embargo, la ejecución de este método generará un error si la propiedad Response.Buffer no es verdadera.

    Propiedad Response.CacheControl

    Esta propiedad anula el valor predeterminado. Cuando establece la propiedad en Público, el servidor proxy puede almacenar en caché la salida generada por ASP.

    Response.CacheControl [= encabezado de control de caché]

    Opciones:

    • Encabezado de control de caché: esta opción de control de encabezado puede ser pública o privada.
    Propiedad Response.CharSet

    La propiedad CharSet le permite agregar el nombre de la tabla de códigos de caracteres (por ejemplo, WINDOWS-1251) al encabezado HTML, la línea de tipo de contenido.

    Response.CharSet code_table_name

    Opciones:

    • charset_name: una cadena que especifica el juego de caracteres para esta página HTML. El nombre de esta tabla de códigos se agregará al encabezado del archivo HTML bajo el parámetro "tipo de contenido".

    Para una página ASP que no utiliza la propiedad Response.Charset, el parámetro "tipo de contenido" en el encabezado será el siguiente:

    Tipo de contenido: texto/html

    Si el archivo ASP contiene el comando

    luego, en el encabezado, el campo de tipo de contenido se verá así

    Tipo de contenido: texto/html; juego de caracteres=Windows-1251

    Comentario:

    Esta función inserta cualquier línea en el encabezado y no verifica su validez.

    Si una página contiene varias etiquetas Response.Charset, cada una de ellas subsiguiente reemplazará el valor por el suyo.

    Propiedad Response.ContentType

    La propiedad ContentType le permite especificar el tipo (tipo) del contenido del archivo HTML. Si no se utiliza esta propiedad, entonces se toma texto/html de forma predeterminada.

    Respuesta.ContentType [=tipo_contenido]

    Opciones:

    • content_type: una cadena que describe el tipo de contenido HTML. Esta cadena normalmente toma la forma "tipo/subtipo", donde tipo es la categoría principal del contenido y subtipo indica el tipo de contenido. Para obtener una lista completa de los tipos admitidos, consulte la documentación de su navegador o la especificación HHTP.

    El siguiente ejemplo ilustra la configuración del tipo de contenido en Formato de definición de canal (canales push).

    El segundo ejemplo demuestra cómo establecer una propiedad con los valores más conocidos.

    Propiedad Response.Expires

    La propiedad Expires especifica el período de tiempo hasta que se considera que la página HTML almacenada en caché por el navegador no ha caducado (período de almacenamiento). Si un usuario solicita una página almacenada en caché del navegador que no ha caducado, el navegador la devuelve directamente desde su caché.

    Respuesta.Expira [=número]

    Opciones:

    • número: la cantidad de tiempo en minutos antes de que la página se considere "vencida". Establecer este valor en 0 hace que la página dada "caduque" inmediatamente.

    Comentario:

    Si esta propiedad se establece más de una vez en una página, se utiliza el valor más pequeño.

    Response.ExpiresPropiedad absoluta

    La propiedad ExpiresAbsolute especifica la hora y la fecha después de las cuales la página HTML almacenada en caché por el navegador se considera caducada (el período de retención ha expirado). Si un usuario solicita una página almacenada en caché del navegador que no ha caducado, el navegador la devuelve directamente desde su caché. Si se especifica la hora (y se especifica la fecha), entonces la "fecha de vencimiento" de esta página vence a la medianoche de ese día. Si no se especifica hora ni fecha, el valor se asigna según el día y la hora en que se ejecutó el script.

    Response.ExpiresAbsolute [= [fecha] [hora]]

    Opciones:

    • fecha: indica la fecha de vencimiento de la "vida útil". El formato de fecha debe cumplir con el estándar RFC-1123.
    • time: indica la hora en la que caduca la página. Este valor se convierte a GMT (hora media de Greenwich) antes de enviar el encabezado al cliente.

    Comentario:

    Si una propiedad determinada se define más de una vez en una página, se considera que el tiempo de vencimiento del "período de almacenamiento" es el primero de todos los valores especificados.

    Propiedad Response.IsClientConnected

    Esta propiedad es de solo lectura, lo que significa que no se pueden asignar valores a esta propiedad. Esta propiedad indica si el cliente está conectado o no al servidor definido en el último Response.Write.

    Respuesta.IsClientConnected()

    Comentario:

    Esta propiedad le permite determinar cuándo un usuario está conectado y cuándo se desconecta del servidor. Por ejemplo, la duración del período de tiempo entre el momento en que el servidor respondió y el momento en que el cliente realizó la solicitud da confianza de que el cliente todavía está conectado y tiene sentido continuar ejecutando el script.