2008-12-02 4 views
49

Sadece bir XMLHTTPRequest JavaScript kullanarak bir HTTP Head isteği yapmak mümkün mü?HTTP HEAD isteği Javascript/Ajax'ta mı?

Motivasyonum bant genişliğini korumaktır.

Aksi takdirde, sahte hale getirmek mümkün mü?

+0

üzerinde tanımlanmış olmalıdır [Bunu kontrol ...] (http://stackoverflow.com/questions/165779/are-the-put- silme-kafa-etc-yöntemleri-mevcut-en-web tarayıcıları) – coder

cevap

85

Kolay, sadece yerine GET veya POST, KAFA yöntemi kullanın:

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(); 
} 

Bu BAŞ yönteminin nasıl kullanılacağını göstermek için sadece kısa bir örnektir. Üretim kodu, farklı sonuç durumları (başarı, başarısızlık, zaman aşımı) için daha iyi tanımlanmış geri aramalara ihtiyaç duyabilir ve farklı event handlers (onload, onerror ve onreadystatechange yerine ontimeout) kullanabilir.

+4

Teşekkürler, bazen bir çerçeve soyutlama temel işlevselliği gizler! – EoghanM

+5

Bu çapraz tarayıcı nasıl bir fikir? JQuery belgelerinde "Not: PUT ve DELETE gibi diğer HTTP istek yöntemleri de kullanılabilir, ancak tüm tarayıcılar tarafından desteklenmez." http://api.jquery.com/jQuery.ajax/ –

+1

IE6'da çalışmıyor (IE7,8 hakkında emin değilim ..) –

4

Bir XMLHTTPRequest nesne

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

Evet,