Javascript FetchAPI从其他网站下载图像,但响应失败,没有数据到达。为什么?

Javascript FetchAPI从其他网站下载图像,但响应失败,没有数据到达。为什么?,javascript,fetch,Javascript,Fetch,当我在控制台中获取带有此语句的图像时 r = await fetch("http://web.mit.edu/files/images/201903/MIT-Melt-Electrowriting.jpg", {mode: "no-cors"}) 我看到图像数据是在Fiddler(嗅探工具)中下载的,浏览器在网络面板中显示200响应,但没有可用于此请求的数据。js控制台中的响应显示: Response {type: "opaque", url: "", redirected: false, s

当我在控制台中获取带有此语句的图像时

r = await fetch("http://web.mit.edu/files/images/201903/MIT-Melt-Electrowriting.jpg", {mode: "no-cors"})
我看到图像数据是在Fiddler(嗅探工具)中下载的,浏览器在网络面板中显示200响应,但没有可用于此请求的数据。js控制台中的响应显示:

Response {type: "opaque", url: "", redirected: false, status: 0, ok: false, …}
    body: (...)
    bodyUsed: false
    headers: Headers {}
    ok: false <<<<<<<<<<<<<<<<<<<<<<<<<
    redirected: false
    status: 0
    statusText: ""
    type: "opaque"
    url: ""
__proto__: Response
}
响应{type:“不透明”,url:,重定向:false,状态:0,确定:false,…}
正文:(……)
bodyUsed:假
标题:标题{}

ok:false默认情况下,fetch使用CORS模式。但当服务器响应不包含“Access Control Allow Origin”头时。它跳过响应体

具有讽刺意味的是,您必须将模式设置为“无COR”才能请求不透明的资源。不透明的响应不能用JavaScript访问,但响应仍然可以由服务工作者提供或缓存


默认情况下,fetch使用CORS模式。但当服务器响应不包含“Access Control Allow Origin”头时。它跳过响应体

具有讽刺意味的是,您必须将模式设置为“无COR”才能请求不透明的资源。不透明的响应不能用JavaScript访问,但响应仍然可以由服务工作者提供或缓存


因为您设置了
模式:“无cors”
-模式无cors
此外,JavaScript可能无法访问结果响应的任何属性
,因此,您必须确保永远无法访问Response-TL;DR-不能通过指定no CORS:pexcellent绕过CORS。我试着从第三个网站下载图片到我自己的网站上,我觉得这很容易。如果可能的话,可以设置img的src,然后抓取图像数据…因为您已经设置了
模式:“无cors”
-模式无cors
此外,JavaScript可能无法访问结果响应的任何属性
,因此,您必须确保永远无法访问Response-TL;DR-不能通过指定no CORS:pexcellent绕过CORS。我试着从第三个网站下载图片到我自己的网站上,我觉得这很容易。也许设置一个img的src,然后抓取图像数据,如果可能的话。。。