我正在尝试使用javascript中的抓取功能从metaweather.com API抓取数据,但即时通讯出现错误
我已经尝试在API URL之前添加https://crossorigin.me,但是它不起作用
我正在尝试按照视频中的说明获取数据,但是它不起作用。
这是代码段和错误消息
请帮助
fetch("https://crossorigin.me/https://www.metaweather.com/api/location/44418/")
.then(data => {
console.log(data);
})
.catch(error => console.log(error));
Error Message:
fetch.js:1 GET https://crossorigin.me/https://www.metaweather.com/api/location/44418/ 522
(匿名)@ fetch.js:1
index.html:1通过CORS策略阻止了对从源“ https://crossorigin.me/https://www.metaweather.com/api/location/44418/”到“ http://127.0.0.1:5500”的访存的访问:标头上没有“ Access-Control-Allow-Origin”标头要求的资源。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。
fetch.js:5 TypeError:无法获取
错误消息:
fetch.js:1 GET https://crossorigin.me/https://www.metaweather.com/api/location/44418/ 522
(匿名)@ fetch.js:1
index.html:1通过CORS策略阻止了对从源“ https://crossorigin.me/https://www.metaweather.com/api/location/44418/”到“ http://127.0.0.1:5500”的访存的访问:标头上没有“ Access-Control-Allow-Origin”标头要求的资源。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。
fetch.js:5 TypeError:无法获取
答案 0 :(得分:1)
将URL放在“ https://cors-anywhere.herokuapp.com/”后面,看看是否可以解决问题。
答案 1 :(得分:0)
错误消息中的重要部分是
所请求的资源上没有“ Access-Control-Allow-Origin”标头。
如果您从中请求数据的服务器的标头中未包含您的来源。然后,您的浏览器将阻止加载该数据。而且您无能为力。
我阅读了crossorigin.me应该做的事情,但显然,它没有在响应中设置标头。我永远不建议使用代理从API提取数据。首先,您依靠代理来启动和运行(并且crossorin.me已经声明它不打算用于生产用途),其次,代理可能会为您提出所有请求,然后使用标头丰富em并将它们发送到您。因此,您应该真正信任该代理可以处理所有数据。