2017-10-11 5 views
0

Y at-il des différences entre les fonctions XHRGet et FetchGet ci-dessous en termes de la demande finale qui est envoyée au serveur de url? Ont-ils des en-têtes par défaut différents, ou quelque chose comme ça? En utilisant les deux méthodes pour l'exploration Web, j'ai remarqué que fetch a tendance à échouer plus souvent que XMLHttpRequest, et je ne sais pas pourquoi c'est le cas.Différences entre le comportement GET par défaut de `XMLHttpRequest` et` fetch`?

(async() => { 
    console.log(await XHRGet("https://stackoverflow.com")); 
    console.log(await fetchGet("https://stackoverflow.com")); 
})(); 

function XHRGet(url) { 
    return new Promise(resolve => { 
    let req = new XMLHttpRequest(); 
    req.addEventListener("load", function() { resolve(this.responseText); }); 
    req.open("GET", url); 
    req.send(); 
    }); 
} 

function fetchGet(url) { 
    return fetch(url).then(res => res.text()); 
} 

Merci!

Répondre

2

fetch() n'inclut pas les informations d'identification par défaut. Je cherche à changer cela dans https://github.com/whatwg/fetch/pull/585. Après cela, ceux-ci devraient être presque identiques. (Il y a aussi quelques différences de décodage: fetch() utilisera toujours UTF-8, XMLHttpRequest est un peu plus clément, mais cela ne devrait pas entraîner d'échec, juste des chaînes de résultats différentes.)