2017-10-11 147 views
0

根据发送到url服务器的最终请求,XHRGetFetchGet函数之间是否有任何区别?他们有不同的默认标题,或类似的东西?虽然同时使用这两种方法进行网络爬行,但我注意到fetch往往比XMLHttpRequest失败的频率更高,我不确定为什么会出现这种情况。XMLHttpRequest`和`fetch`默认GET行为之间的区别?

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

谢谢!

回答

2

fetch()默认情况下不包括凭证。我期待在https://github.com/whatwg/fetch/pull/585中改变这种情况。之后,这些应该几乎相同。 (还有一些解码差异,fetch()将总是使用UTF-8,XMLHttpRequest稍微宽松些,但不应该导致失败,尽管可能会有不同的结果字符串)

相关问题