XMLHttpRequest`和`fetch`默认GET行为之间的区别?
问题描述:
根据发送到url
服务器的最终请求,XHRGet
和FetchGet
函数之间是否有任何区别?他们有不同的默认标题,或类似的东西?虽然同时使用这两种方法进行网络爬行,但我注意到fetch
往往比XMLHttpRequest
失败的频率更高,我不确定为什么会出现这种情况。XMLHttpRequest`和`fetch`默认GET行为之间的区别?
(async() => {
console.log(await XHRGet("https://*.com"));
console.log(await fetchGet("https://*.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());
}
谢谢!
答
fetch()
默认情况下不包括凭证。我期待在https://github.com/whatwg/fetch/pull/585中改变这种情况。之后,这些应该几乎相同。 (还有一些解码差异,fetch()
将总是使用UTF-8,XMLHttpRequest
稍微宽松些,但不应该导致失败,尽管可能会有不同的结果字符串)