为什么Request和Fetch会返回不同的标头?
响应对象中的标头是否始终使用Fetch限制?尽管它在服务器上使用,但使用了各种模式?
请求似乎返回一组丰富的标头,而Fetch则没有。
除了语言机制差异(基于承诺,回调等等..)这两者有何不同?为什么一个人没有返回丰富的标题集,另一个是?
两个示例中使用的 fileURL
都是跨域的。在Node / Express服务器上,将呼叫Google CDN。
使用请求
https://github.com/request/request
request(fileURL, (err, res, body) => {
//headers in res
//are pretty rich
});
使用抓取
https://github.com/matthew-andrews/isomorphic-fetch
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
const reqConfig = { method: 'POST',
headers: myHeaders,
body: data,
mode: 'cors', //or 'no-cors', or this field blank..
cache: 'default' };
fetch(fileURL, reqConfig).then(res => {
//headers in res
//are not very complete
})
//我无法访问服务器上的CORS策略,因此不能选择..
修改 即使以{mode:' no-cors'}操作,标题也不满......
答案 0 :(得分:1)
由于您以cors
模式运行,因此您请求的服务器必须white list the headers you can see。
默认情况下,在执行CORS请求时,只有这些标头可用:
答案 1 :(得分:0)
fetch
可能不是您想要的node
,除非您有一个通用应用程序并且需要在客户端和服务器上运行相同的代码。 fetch
是为浏览器创建的,因此它至少会在浏览器中锁定您的标题(请参阅我的其他答案),因此如果您希望完全访问标题,那么{{1最好的。