Ver Mensaje Individual
  #15 (permalink)  
Antiguo 11/05/2012, 15:16
IXtremeLT
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 10 meses
Puntos: 32
Respuesta: ¿Cómo saber si una url "ajena" devuelve 404?

@emprear fijate algo hiciste mal por que checa este log de la consola web:

Código Javascript:
Ver original
  1. [15:46:55.353] document.domain
  2. [15:46:55.359] "angelfcm.my-place.us"
  3. --
  4. [15:47:29.629] $('iframe[name=frame1]').attr('src');
  5. [15:47:29.637] "http://forosdelweb.com"
  6. --
  7. [15:48:16.513] frame1.location.toString(); // Sin UniversalXPConnect
  8. [15:48:16.521] Error: Permission denied to access property 'toString'
  9. --
  10. [15:48:55.463] netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); frame1.location.toString(); // Con UniversalXPConnect
  11. [15:48:58.223] "http://www.forosdelweb.com/"
  12. --
  13. [15:49:31.134] netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); frame1.document.title; // Con UniversalXPConnect
  14. [15:49:33.790] "Foros del Web, comunidad para aprender web"

En mi ocasión es totalmente útil, y estoy muy agradecido que si hay una forma aunque se limite a firefox y que el usuario tenga que aceptar la desición. Además si le das en recordar desición, ya no te aparecerá ese mensaje.

Quería optar por usar PHP, pero al usar get_headers(), no puedes estar seguro cuales fueron las cabezeras finales, ya que si el sitio te redirige a otro lugar, get_headers() no te da esas cabezeras, te da las del primer enlace. De hecho estuve investigando, y vi que hay formas de obtener las cabezeras de varias redirecciones, pero es muy lento el funcionamiento y en algunas páginas núnca termina de buscar (se traba). Además cuando la URL tiene consultas GET, es raro que el sitio te de un 404, simplemente te muestra un error, de usuario final, de que la página o articulo no existe.

Mucho menos funcionaría con un simple fopen, ya que al no existir el enlace, te redirecciona al hosting, así que siempre habrá un "true" a menos que el sitio no tenga hosting, que es muy raro.

Y si uso los iframes, puedo obtener el enlace final al cargar el sitio y asi compararlo con el enlace que se solicitó, si es diferente, lo más posible es que no se encontró el enlace en el sitio (404). Para asegurarlo voy a establecer patrones para distintos sitios con los que funciona el sistema web que la aplicación tiene que depurar, no son muchos (como 5). Los patrones serían por ejemplo, el mensaje de error que da el sitio al no encontrar el enlace, o bien la url que devuelve. Para ello tengo que acceder al DOM y con este privilegio es posible hacerlo.

Si tu sabes una mejor manera de hacerlo, dimela. Saludos!