Javascript 为什么fetch返回状态为0的响应?

Javascript 为什么fetch返回状态为0的响应?,javascript,ajax,frontend,Javascript,Ajax,Frontend,我想使用FetchAPI从URL获取整个HTML文档 let config = { method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'text/html', 'Accept-Language': 'zh-CN', 'Cache-Control': 'no-cache' }, mode: 'no-cors'}; fetch('http://www.baidu.com',

我想使用FetchAPI从URL获取整个HTML文档

let config = {
method: 'GET',
headers: {
    'Content-Type': 'application/json',
    'Accept': 'text/html',
    'Accept-Language': 'zh-CN',
    'Cache-Control': 'no-cache'
},
mode: 'no-cors'};

fetch('http://www.baidu.com', config).then((res)=> {
console.log(res);}).then((text)=> {});
当我在chrome中运行代码时,它会触发一个请求并在chrome网络选项卡中返回html。但是,请返回:

为什么状态为0以及如何获得与chrome网络中相同的正确分辨率?

配置模式部分:

无cors-防止该方法不是HEAD、GET或POST。如果任何ServiceWorker截获这些请求,他们可能不会添加或覆盖除这些请求之外的任何头。此外,JavaScript可能无法访问结果响应的任何属性。这确保了ServiceWorkers不会影响Web的语义,并防止跨域泄漏数据所引起的安全和隐私问题

实际上,您从发出这样一个请求(将
无cors
指定为模式)得到的响应将不包含关于请求是否成功的信息,从而使状态代码为0。从
fetch
调用中删除
mode
将表明CORS实际上失败了


要了解0在您的特定情况下的含义,请参考其他SO答案。

状态0依赖于库,从哪个库获取
fetch
函数?
fetch
是本机函数(现在)。Thx,如果删除“no cors”:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”标头。因此,不允许访问源“”。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源。如何解决CORS?这是正确的。CORS是一种浏览器安全功能,不能从页面本身禁用。如果你想从你的浏览器请求百度的页面,你必须联系百度。欢迎来到疯狂而精彩的CORS世界。必要的恶;CORS对web开发人员来说是一个巨大的麻烦。