Estás en:   ArielOrtiz.info > Desarrollo de aplicaciones web > Práctica 3: Encabezados de petición

Práctica 3: Encabezados de petición

Objetivos

Durante esta práctica, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción de la actividad

NOTA: Esta práctica se puede elaborar de manera individual o en parejas.

Tu archivo fuente de JavaScript debe comenzar con un comentario que contenga el título de la práctica, la fecha y los datos personales de los autores (nombre y matrícula). Por ejemplo:

/*----------------------------------------------------------
 * Práctica 3: Encabezados de petición
 * Fecha: 18-Feb-2015
 * Autores:
 *           A01166611 Pepper Pots
 *           A01160611 Anthony Stark
 *----------------------------------------------------------*/
  1. Crea un directorio llamado practica3. Coloca en este directorio el archivo servidor_web.js cuyo contenido es el siguiente:

    // Archivo: servidor_web.js
    
    'use strict';
    
    var net = require('net');
    var PORT = 8080;
    var text = 'Hello World!';
    var body = new Buffer(text);
    
    net.createServer(function (sock) {
        sock.on('data', function (data) {
            console.log(data.toString());
            sock.end(
                'HTTP/1.1 200 OK\r\n' +
                'Server: NodeServer/0.1\r\n' +
                'Date: ' + new Date().toUTCString() + '\r\n' +
                'Content-Length: ' + body.length + '\r\n' +
                'Content-Type: text/plain; charset=utf-8\r\n' +
                '\r\n' +
                body
            );
        });
    }).listen(PORT);
    
    console.log('Servidor web corriendo en puerto: ' + PORT);
    
  2. Modifica el programa anterior para que en lugar de responder con el texto plano Hello World!, responda con una página completa de HTML que contenga una tabla con todos los encabezados de la petición (request) tal como se muestra en el siguiente punto. El encabezado Content-Type de la respuesta (response) debe ser text/html.
  3. Prueba tu servidor usando curl y al menos un navegador.

    Para correr curl, teclea el siguiente comando desde la terminal:

    curl -v http://localhost:8080

    La salida esperada debe ser similar a la siguiente:

    * Rebuilt URL to: http://localhost:8080/
    * Hostname was NOT found in DNS cache
    *   Trying 127.0.0.1...
    * Connected to localhost (127.0.0.1) port 8080 (#0)
    > GET / HTTP/1.1
    > User-Agent: curl/7.35.0
    > Host: localhost:8080
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    * Server NodeServer/0.1 is not blacklisted
    < Server: NodeServer/0.1
    < Date: Thu, 04 Sep 2014 17:55:46 GMT
    < Content-Length: 1353
    < Content-Type: text/html
    <
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title>Encabezados</title>
        <style>
          body {
            background: #FFFFFF;
            color: #000080;
            font-family: sans-serif;
            font-size: medium;
            margin: 20px;
          }
    
          hr {
            border: 0;
            color: #B0C4DE;
            background-color: #B0C4DE;
            height: 1px;
          }
    
          table {
            border-collapse: collapse;
            border: 1px solid #000000;
            padding: 0px;
            margin-bottom: 10px;
            color: #000000;
            background: #E6E6FA;
          }
    
          td {
            border: 1px solid #000000;
            padding: 10px;
            text-align: center;
          }
    
          th {
            border: 1px solid #000000;
            padding: 10px;
            color: #008080;
            background: #B0E0E6;
          }
    
          li {
            color: #AAAAAA;
          }
    
          span {
            color: #094141;
          }
    
          footer {
            font-size: 70%;
            color: #B0C4DE;
            text-align: center;
          }
        </style>
      </head>
    
      <body>
        <h1>Encabezados</h1>
    <table>
    <tr><th>Encabezado</th><th>Valor</th></tr>
    <tr><td>User-Agent</td><td>curl/7.35.0</td></tr>
    <tr><td>Host</td><td>localhost:8080</td></tr>
    <tr><td>Accept</td><td>*/*</td></tr>
    </table>
          <hr/>
          <footer>
            Desarrollo de aplicaciones web
          </footer>
      </body>
    </html>
    * Connection #0 to host localhost left intact
    

    Para probar en un navegador, visita el siguiente URL:

    http://localhost:8080

    La salida en el navegador debe ser parecida a la siguiente:

  4. Verifica que la página producida sea HTML5 válido utilizando el Servicio de Validación de W3C.

¿Qué se debe entregar?

Crea un archivo tarball con todo el contenido del directorio practica3. Nombra a este archivo practica3.tgz. Este archivo se puede crear desde la línea de comando tecleando lo siguiente (asegúrate que te encuentres en el mismo nivel que el directorio practica3):

tar czf practica3.tgz practica3

✔ Instrucciones para subir archivo

Para entregar el archivo practica3.tgz, ingresa los siguientes datos:

Solicitar NIP

Fecha límite: Miércoles, 18 de febrero.

Evaluación

Esta actividad será evaluada usando los siguientes criterios:

100 La actividad cumple con todos los requerimientos.
-10 No se incluyó en comentario los datos de los autores.
10 El programa fuente tiene errores sintácticos.
50-90 El programa tiene algunos errores a tiempo de ejecución.
DA El programa es un plagio.