2008-12-02 16 views
49

¿Es posible hacer una solicitud de encabezado HTTP utilizando únicamente una solicitud XMLHTTP en JavaScript?HTTP HEAD Solicitud en Javascript/Ajax?

Mi motivación es conservar el ancho de banda.

Si no, ¿es posible simularlo?

+0

Sí, [mira esto ...] (http://stackoverflow.com/questions/165779/are-the-put- delete-head-etc-methods-available-in-most-web-browsers) – coder

Respuesta

85

fácil, sólo tiene que utilizar el método HEAD, en lugar de GET o POST:

function UrlExists(url, callback) 
{ 
    var http = new XMLHttpRequest(); 
    http.open('HEAD', url); 
    http.onreadystatechange = function() { 
     if (this.readyState == this.DONE) { 
      callback(this.status != 404); 
     } 
    }; 
    http.send(); 
} 

Esto es sólo un pequeño ejemplo para mostrar cómo utilizar el método HEAD. El código de producción puede necesitar devoluciones de llamada más finas para diferentes estados de resultados (éxito, falla, tiempo de espera), y puede usar diferentes event handlers (onload, onerror y ontimeout en lugar de onreadystatechange).

objeto
+4

¡Gracias, a veces la abstracción de un framework oculta la funcionalidad subyacente! – EoghanM

+5

¿Alguna idea de cómo es esto? La documentación de jQuery indica "Nota: Otros métodos de solicitud HTTP, como PUT y DELETE, también se pueden usar aquí, pero no son compatibles con todos los navegadores". http://api.jquery.com/jQuery.ajax/ –

+1

No funciona en IE6 (no estoy seguro acerca de IE7,8 ..) –

4

Un XMLHTTPRequest debe tener

getAllResponseHeaders(); 
getResponseHeader("header-name") 

definido en él