PDF de programación - Tecnologías Web: Interactividad y envío de información Cliente -> Servidor CGI

Imágen de pdf Tecnologías Web: Interactividad y envío de información Cliente -> Servidor CGI

Tecnologías Web: Interactividad y envío de información Cliente -> Servidor CGIgráfica de visualizaciones

Publicado el 21 de Febrero del 2021
455 visualizaciones desde el 21 de Febrero del 2021
264,5 KB
33 paginas
Creado hace 18a (19/10/2005)
Sistemas de
Información

Tecnologías Web: Interactividad y envío de
información Cliente → Servidor
CGI

Agradecimientos: Jesus Villamor Lugo, Simon Pickin de IT/UCIIIM.

[email protected]

Concepto
CGI: Common Gateway Interface
Protocolo para ejecutar programas en el servidor

vía HTTP.

Permite hacer disponible en el servidor HTTP:

programas escritas en cualquier lenguaje interpretado o

compilado. (C, Perl y Bourne Shell)

Normalmente, las aplicaciones exportadas residen

en directorio particular (usualmente cgi-bin)
Se puede configurar el servidor para utilizar otros

directorios.

[email protected]

2

¿Qué hace la parte servidora?

Recibe unos datos, los procesa y devuelve otros
Toma los datos por la entrada estándar

(teclado) y envía los datos de salida por la
salida estándar (pantalla).

Cualquier programa capaz de leer por entrada

estándar y escribir en salida estándar puede
actuar como CGI

El usuario no puede interacturar directamente
con el programa CGI. (salvo llamadas a varios
cgis)

[email protected]

3

Arquitectura CGI (Ejemplo)

HTML

&

FORMS

Navegador

Cliente Web

Cliente

HTTP

HTTP

Internet
TCP/IP

Docs HTML
CGI.

Aps

BD1

BD2

BD3

Lógica

BBDD

Ej.: CGI hace que clientes Web puedan actualizar BBDD.
Uso típico en aplicaciones con tres niveles:

Cliente: navegador que envía peticiones HTTP GET ó POST que

contienen los datos que han sido introducidos mediante un formulario.

Logica: programa que procesa la solicitud, recibe parámetros por

medio del CGI, toma acciones y responde (por abuso de lenguaje, a
veces se le llama “un programa CGI” o “un CGI”).

Base de datos: puede ser actualizada por la acción del programa

[email protected]

4

¿Qué necesito?

Página HTML
Programa o script que lea datos de entrada estándar

y escriba en salida estándar

Permisos adecuados en el servidor para permitir su

ejecución
chmod 750 *.cgi" (o "chmod 755 *.cgi", si tu servidor no

tiene accesos de grupo a tus archivos)

En los laboratorios de telemática utilizad “chmod 755 *.cgi”

[email protected]

5

¿Cómo referenciar un CGI desde
una página web?
Usando etiquetas HTML

Usando la etiqueta A:

<a href="direccion_del_CGI">Texto</a>

Usando la etiqueta IMG:

<img src="direccion_del_CGI">

Otras (javascript, css, etc.)

Usando un formulario (forma + habitual):

<form action="direccion_del_CGI" > <!--
Elementos del formulario --> </form>

[email protected]

6

Ejemplo (usando etiquetas)

fecha.html

<a href="http://www.sitioweb.es/cgi-
bin/fecha.cgi"> Dime la fecha </a>

fecha.cgi

#!/bin/bash
echo Content-type: text/plain
echo
/bin/date

Prueba

[email protected]

7

Anatomía de un CGI

#!/bin/bash
echo Content-type: text/plain
echo
/bin/date

1. Tipo de respuesta:

• Content-type
• Location
• Status

2. Línea en blanco

3. Datos de salida:

• Salida estándar
• Respetar tipo Mime

[email protected]

8

Tipo de respuesta
Content-type

text/html
image/gif
video/mpeg

Location

Status

Para enviar archivo existente como respuesta
Location: response.html

Si el script sirve para tratar condición de error
Envio información del estado
Códigos

1xx msg de información
2xx éxito de algún tipo (200 Ok la petición ha tenido éxito)
3xx redirección a otra url (301 Moved Permanently )
4xx error en cliente (404 not found. The requested resource doesn't exist)
5xx error en el servidor (500 Server Error )

[email protected]

9

Probando en el laboratorio
Páginas HTML

¿Dónde las pongo?

~tuCuenta/lib/www/

¿Cómo accedo a ellas?

http://www.lab.it.uc3m.es/~tuCuenta

Programas y scripts cgi

¿Dónde los pongo?

¿Cómo accedo a ellos?

~tuCuenta/lib/www/cgi-bin/

http://www.lab.it.uc3m.es/alum-cgi/tuCuenta/cgi-bin/app.cgi

[email protected]

10

CGIs con argumentos

?
+

Separa el cgi de los argumentos

Separa los argumentos entre sí

<a href="/cgi-bin/cgi?arg1+arg2+arg3">pulsa aqui</a>

<a href="/cgi-bin/cgi/infoAdicional?arg1+arg2">pulsa aqui</a>

Información adicional recuperable utilizando
Variable de entorno PATH_INFO

[email protected]

11

CGIs y Formularios
Usando GET

Se usa para obtener fichero o recurso
Los datos se leen de var de entorno QUERY_STRING
Tamaño limitado 256 caracteres
No registra cada petición

Usando POST

Se usa para enviar datos al servidor
Los datos se leen de la entrada estándar
Tamaño ilimitado (preguntar CONTENT_LENGTH )
Registra cada petición

[email protected]

12

CGIs y Formularios
<form action="cgi-bin/fichero.cgi"> Contenido </form>

Información del formulario codificada en pares campo/valor
& separa entre sí las diferentes parejas campo/valor
= Separa el nombre del campo de su valor
%NN Identifica los caracteres especiales,(≠ ASCII 7 bits)
%NN También para codificar &, = y % cuando son datos
+ para codificar los espacios

NN es el valor en hexadecimal (ASCII extendido)

para no confundirlos con caracteres de control

[email protected]

13

Ejemplo

getYpost.cgi
#!/bin/bash
echo "Content-Type: text/html"
echo ""
if [ $QUERY_STRING != "" ]
then

echo "Datos enviados por GET<br/>"
echo "----------------------<br/>"
echo $QUERY_STRING

else

1. Tipo de respuesta

2. Línea en blanco

3. Datos de salida

echo "Datos enviados por POST<br/>"
echo "----------------------<br/>"
cat

PruebaGet
PruebaPost

fi

[email protected]

14

Ejemplo
Probando get:

PruebaGet (sin página web)
http: //monitor03.lab.it.uc3m.es/alum-cgi/00xxxxx/cgi-bin/getYpost.cgi?mensaje=hola

PruebaGet.html (desde página web)
<html>
<body> <a href="DireccionCgi?arg1+arg2+arg3">pulsa aqui</a> </body>
</html>

Probando post:

PruebaPost.html
<html>
<body>
<form method="post" action=“direccionDelCgi">

Texto: <textarea name="mensaje"></textarea> <br/>
<input type="submit" value="Enviar"/>

</form>
</body>
</html>

[email protected]

15

HTTP/CGI
Proceso de Desarrollo

1.



Fichero .html
(con <FORM>)

<URL>

2.
navegador



GET ó POST
Petición

Programa CGI

Respuesta



visualizar

3.

4.

Servidor

Cliente

[email protected]

Se parte de un Fichero.html que
tenga un formulario (etiqueta
<FORM>) accesible a través de
Internet



El <FORM> deberá especificar las
diversas formas de paso de
parámetros

El cliente accederá al fichero html
a través de un Navegador,
rellenará el formulario y dará a la
tecla de aceptar (Submit).
Empaquetando la petición.
La petición de cliente es atendida
por un Programa CGI
(usualmente un script) quien da la
debida respuesta tras procesarse la
petición.
El cliente Visualizará la
respuesta

16

Acceso al CGI
Entrada vía formularios
Mediante el uso de formularios HTML:

Etiqueta <FORM>

⌧Comunica al cliente que estamos comenzando un formulario.
⌧Dos atributos:

•Método:

–cómo recoger la información del usuario.
–GET (por defecto) o POST.

•Acción:

–tipo de URL que recibirá el formulario (puede no ser CGI, ej. mailto).

⌧Ejemplo:

<form method="POST” action="http://www.ncsu.edu/cgi-bin/post-query">
Campos de Información: <input ...>, <select …>, <textarea …>

⌧Name, size, type (ya explicados bajo HTTP/HTML)
⌧Recoge datos en forma de parejas de cadenas (nombre, valor)

[email protected]

17

Acceso al CGI
Cómo pasar parámetros al programa

No se puede pasar datos al programa vía línea de comando.

La forma de hacerlo depende del método de envío.

Primero, se construye la cadena llamada query string

es una serie de parejas nombre=valor separados por &

ej: nombre1=valor1&nombre2=valor2&...

se codifica de manera similar al “quoted printable” de MIME:

espacios reemplazados por “+” y caracteres especiales en hexadecimal

Segundo, se envía al CGI según el método de envío

Se pone en el cuerpo del mensaje que se envía en el POST.
El CGI lo lee por entrada estándar (stdin)

[email protected]

18

método GET:

método POST:

se agrega a la URL, separado por un signo de interrogación:

http://<host>:<port>/<path>?<query_string>

El CGI lo lee mediante la variable de entorno QUERY_STRING

Escenario básico
Con el método POST

Navegador Web Servidor Web

Variables de entorno

Submit

Submit

Post

Escribe el entorno

Ejecuta

Programa CGI

Lee el entorno

Entrada estándar

Salida estándar

Acceso a la BD

BD

Fichero HTML

Cliente

[email protected]

Servidor

19

Escenario básico
Con el método POST

1.
2.
3.
4.

5.
6.

7.

8.

9.
10.

El usuario pincha en el botón submit.
El navegador envía la petición con el método POST de HTTP.
El servidor recibe la petición y descubre el método y la acción.
El servidor establece las variables de entorno tales como server_name,
request_method, content_type, content_extension, etc.
El servidor inicia la ejecución del programa CGI especificado en el URL
El programa CGI lee las variables de entorno y, en particular, descubre
que está respondiendo a un POST.
El programa CGI recibe el cuerpo del mensaje − que contiene el query
string − por la entrada estándar y utiliza la variable content_extension
para saber el tamaño de los datos (no disponible con GET).
El programa CGI hace sus labores (interactúa con la BD etc.), construye
la respuesta en forma de un tipo MIME reconocido y posiblemente
escribe tambié
  • Links de descarga
http://lwp-l.com/pdf18889

Comentarios de: Tecnologías Web: Interactividad y envío de información Cliente -> Servidor CGI (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad