Yanıtlar:
XMLHttpRequest nesnesi için W3C standardına göre değil (vurgu eklendi):
Yanıt bir HTTP yeniden yönlendirmesi ise:
Location başlığı tarafından iletilen URL'nin kaynağı, XMLHttpRequest kaynağı ile aynı kaynaksa ve yeniden yönlendirme sonsuz döngü önlemlerini ihlal etmiyorsa , aynı kaynak istek olay kurallarını gözlemlerken yeniden yönlendirmeyi şeffaf bir şekilde izleyin .
Onlar edildi dikkate gelecekteki bir sürümde için:
Bu belirtim, bu belirtimin gelecekteki bir sürümü için düşünülen aşağıdaki özellikleri içermez:
- Aşağıdaki yönlendirmeleri devre dışı bırakma özelliği;
ancak en son teknik özellik artık bundan bahsetmiyor.
Yeni API Getirme destekleri yönlendirme elleçleme farklı modları: follow
, error
, ve manual
, ama yönlendirme iptal edildiğinde yeni URL'yi veya durum kodunu görüntülemek için bir yol bulmak mümkün değil. Yeniden yönlendirmenin kendisini durdurabilirsiniz ve sonra bir hata gibi görünür (boş yanıt). İhtiyacın olan tek şey buysa, gitmekte fayda var. Ayrıca bu API üzerinden yapılan taleplerin henüz iptal edilemez olduğunu bilmelisiniz . bunlar şunlardır şimdi.
XMLHttpRequest'e gelince HEAD
, sunucuyu yapabilir ve URL'nin değişip değişmediğini inceleyebilirsiniz:
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
Durum kodunu almayacaksınız, ancak yeni URL'yi tüm sayfayı ondan indirmeden bulacaksınız.
OPTIONS
daha iyi bir seçim olabilir, yine de yalnızca genel olmayan amaçlarla çalışır, vb. Yönetici, HTTP -> HTTPS
responseURL
Yönlendirme hedefini almak için özelliği kullanabilir veya yanıtın nihayetinde kabul ettiğiniz bir konumdan getirilip getirilmediğini kontrol edebilirsiniz.
Bu, elbette sonucun yine de getirildiği anlamına gelir, ancak en azından yönlendirme hedefi hakkında gerekli bilgileri alabilir ve örneğin yanıtı atmak istediğinizde koşulları tespit edebilirsiniz.
Hayır, API'de XMLHttpRequest tarafından sunulan, varsayılan davranışını otomatik olarak 301 veya 302'yi takip etmenize izin veren bir yer yok.
İstemci Windows üzerinde IE çalıştırıyorsa, bunun yerine bu davranışı önlemek için bir seçenek ayarlamak için WinHTTP kullanabilirsiniz, ancak bu çok sınırlayıcı bir çözümdür.