我是一个新人,目前正在学习。在开发web应用程序时,我遇到了
访问在'http://localhost/m/document/019286313eb7ce6_20210915125851。jpeg。webp'从来源'https://localhost'已经被CORS策略阻止:响应pre - flight请求不通过访问控制检查:没有'Access- control - allow - origin '头是在请求的资源上存在。如果一个不透明的响应满足你的需求,将请求的模式设置为“no-cors”来获取禁用CORS的资源
我做了谷歌和阅读了一些东西,但我仍然不知道如何解决这个问题。
我没有任何访问服务器的权限,因为我只使用API。所以我只是想知道jQuery能否修复CORS问题,还是必须在后端设置?我安装了一个快速修复我的测试开发目的的chrome扩展,但我只是想知道是否有另一种方法
这是我尝试过的
fetch('http://localhost/m/document/019286313eb7ce6_20210915125851.jpeg.webp', {
method: "GET",
headers: {
"accept": "application/json",
"Access-Control-Allow-Origin":"*"
}
})
.then(res => res.blob())
.then(blob => {
myBlob = blob;
console.log(myBlob);
});
###出于安全原因,在现代浏览器上,你依赖于服务器,所以你可以绕过它的最好方式是使用代理服务器,代理你的请求,并自动启用CORS
###CORS错误可能是噩梦。CORS报头即Access-Control-Allow-Origin是一个RESPONSE报头,你不能在CLIENT上设置一个RESPONSE报头。它的目的是保护服务器响应不受未知域的影响,从而禁止使用api。
在你的情况下,你没有访问服务器。你有选择
“继续chrome扩展暂时允许您的开发机器访问API”。
在服务器上更改报头以包含您的域。(需要服务器访问)
独立访问API并将结果以文件(JSON file)的形式提供给你的应用程序。
配置代理:您可以定义将任何访问/m路径的请求转发到前端开发服务器上的http://localhost/m。由于开发服务器是与后端API通信的中间人,它可以安全地避免CORS。