Hola RedPic, hoy recibo un par de 16f88, también para mi servidor web.
Bien, pasamos a las peticiones HTTP que es lo que interesa.
La cabecera de petición de una página web comienza con la siguiente cadena ascii:
"GET / HTTP/1.1" + carácter ascii CR (0xD) + carácter ascii LF (0xA)
Esta petición el servidor web la asume como una petición de la página index.htm
Para una petición de un archivo en concreto sería así:
"GET /mi_pagina.htm HTTP/1.1" + carácter ascii CR (0xD) + carácter ascii LF (0xA)
Después de esta línea vienen otras sobre el tipo de archivos que soporta el navegador, navegador y su versión, tipo de conexión, etc. No recuerdo ahora mismo si el final de la petición era CR+LF+CR+LF, esta tarde cuando llegue a casa te lo digo.
De todos modos, en mi código sólo tengo en cuenta la mitad de la primera línea de la petición, que le dice al servidor que es lo que quiere el navegador, al resto ni caso.
Para la cabecera de respuesta del servidor al navegador, lo mínimo que hay que poner para que todo vaya bien con el IExplorer y Mozilla (Netscape),es lo siguiente:
1. Esto le dice al navegador que todo va bien y aceptamos la petición
"HTTP/1.0 200" + CR + LF
2. Aquí le decimos que tipo de archivo vamos a enviar, es en mi caso un flash.
"Content-Type: application/x-shockwave-flash" + CR + LR
pero pueden ser ciento y la madre dependiendo de lo que envíes, ejemplos:
"Content-Type: text/html" + CR + LF
o
"Content-Type: image/gif" + CR + LF
o
"Content-Type: image/jpeg" + CR + LF
3. El tipo de conexión que aceptamos establecer. Esto es importante, de hecho mis problemas con el IExplorer venían por aquí.
"Connection: keep-alive" + CR + LF
Esta respuesta le dice al navegador que mantendremos la conexión abierta. Esta es la forma que por defecto los navegadores solicitan.
"Connection: close" + CR + LF
Esta respuesta le dice al navegador que después de enviarle lo solicitado cerraremos la conexión. Aquí venían mis problemas con el IExplorer. Te explico con un ejemplo:
<html>
Bienvenido a mi web
<img src="mi_imagen_1.GIF">
<img src="mi_imagen_2.jpg">
</html>
En este caso, el navegador al cargar la página html realiza una petición por cada una de las imágenes.
Si después de enviar el html desde el servidor, cerramos la conexión, el IExplorer cierra la conexión también y no realiza las peticiones de las imágenes, quedando incompleto el visionado de la página. Esto no es así en el caso de Mozilla, que sí realiza todas las peticiones correctamente aunque el servidor cierre la conexión cada vez que atiende una petición.
La solución es la conexión keep-alive, así mantenemos la conexión abierta hasta que el navegador cierra la conexión al haber descargado todo lo necesario del servidor.
4. Ahora debemos decirle el largo de los datos, en bytes, que vamos a enviar
"Content-Length: 495" + CR + LF
5. Finalizamos la cabecera con CR + LF y a continuación el archivo o lo que le deseemos enviar al navegador.
No se si te he aclarado algo, cualquier duda ya sabes.
Saludos desde Almería, España