WWWOFFLE - World Wide Web Offline Explorer - Versión 2.6 ======================================================== Esta es la lógica que sigue el programa WWWOFFLE al manejar peticiones de URLs que tienen una contraseña en la cabecera o en la URL misma. Trasfondo --------- 1) Cuando un navegador pide una página protegida por contraseña se realiza una petición sin la contraseña. Esto es obvio ya que no hay ninguna forma de saber que páginas tienen contraseña. 2) Cuando el servidor recibe una petición por la página que requiere autentificación pero no lleva ninguna contraseña devuelve una respuesta '401 No autorizado'. Esta contiene un "reino" que define el rango de página sobre las cuales este par usuario/contraseña es válido. Un reino no es un rango bien definido. Puede ser cualquier conjunto de páginas en el mismo servidor. No tienen porqué tener relación entre sí, aunque normalmente la tienen. 3) Cuando un navegador recibe una respuesta '401' preguntará al usuario por un usuario y contraseña si no tiene una especificado para el reino actual. Si ya se conoce una no es necesario molestar al usuario de nuevo. 4) La petición que el navegador devuelve esta vez incluye en la cabecera el para nombre de usuario y la contraseña o si no la misma petición que en el caso (1). 5) El servidor manda de vuelta la página pedida. 6) Algunos navegadores siguen los pasos (1)-(5) en todas las páginas del servidor. Otros intentan adivinar el rango de páginas que pertenecen a un reino. Por ejemplo, mandan el par usuario/contraseña para todas las páginas en el mismo directorio. Esto significa que siguen los pasos (3)-(5) y que no usan los pasos (1) y (2) para estas páginas. Implementación de WWWOFFLE -------------------------- 1) Si se especifica una contraseña en la petición se maneja como si estuviera en la propia URL. Esto significa que el fichero de la caché es pasado por una tabla de referencias de la misma forma que una URL normal, pero que contiene el usuario/contraseña. 2) Una página con contraseña siempre se guarda en la caché sin el usuario/contraseña. Esto asegura que cuando la página sea pedida más adelante estando desconectado se enviará al navegador la versión sin contraseña. Esto es así para resolver el problema de los navegadores que envían el par usuario/contraseña a todas las páginas cuando se arranca o se cierra el navegador. Una petición de una de las páginas (quizás apuntada en el marca páginas) no funcionará ya que la página con el usuario/contraseña no está guardada y será pedida para ser recogida posteriormente. 3) El modo de operación del servidor WWWOFFLE es el siguiente: URL = URL sin contraseña URLpw = URL con contraseña modo WWWOFFLES - Vea README WWWOFFLES |¿Se provee | ¿URL en |¿URLpw en| Acción a realizar modo |contraseña?|la caché?|la caché?| ----------+-----------+---------+---------+------------------------------------- Spool | No | No | n/a | Pedir URL (->F) Spool | No | Sí | n/a | Almacenar URL Spool | Sí | No | No | Pedir URLpw (->F) Spool | Sí | No | Sí | Almacenar URLpw, Request URL (->F) Spool | Sí | Sí | No | si(!401) Almacenar URL Spool | Sí | Sí | No | si(401) Pedir URLpw (->F) Spool | Sí | Sí | Sí | si(!401) Almacenar URL Spool | Sí | Sí | Sí | si(401) Almacenar URLpw ----------+-----------+---------+---------+------------------------------------- Fetch | No | n/a | n/a | Descargar URL Fetch | Sí | No | n/a | Descargar URL, si(401) Descargar URLpw Fetch | Sí | Sí | n/a | si(!401) Descargar URL Fetch | Sí | Sí | n/a | si(401) Descargar URLpw ----------+-----------+---------+---------+------------------------------------- Real | No | n/a | n/a | Descargar URL Real | Sí | No | n/a | Descargar URL, si(401) Descargar URLpw Real | Sí | Sí | n/a | si(!401) Descargar URL Real | Sí | Sí | n/a | si(401) Descargar URLpw ----------+-----------+---------+---------+------------------------------------- Los otros modos menores (SpoolOrReal, RealPragma etc.) actúan como en los que están basados. 4) Cuando se descarga recursivamente el usuario/contraseña se usa sólo en el mismo servidor pero para todas las peticiones (el modo de recogida ordena las que lo necesitan). 5) Cuando se provee un nombre de usuario pero no contraseña (p.e. en una URL de FTP con el usuario en la URL) siempre se devuelve una página preguntando por la contraseña. 6) Cuando la opción de configuración try-without-password es falsa (por defecto es verdadera) este comportamiento se modifica. Si la URL se pide con contraseña la existencia de la misma URL sin contraseña se ignora. Esto significa que el comportamiento es el mismo que si la petición de la páginas no tuviera contraseña. Sólo está basada en la propia petición de la página. Andrew M. Bishop 17 de Septiembre de 2000