如何在使用访存时解决CORS错误

时间:2019-10-26 12:17:19

标签: javascript html ajax html5-canvas fetch

我正在尝试使用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:无法获取

2 个答案:

答案 0 :(得分:1)

将URL放在“ https://cors-anywhere.herokuapp.com/”后面,看看是否可以解决问题。

答案 1 :(得分:0)

错误消息中的重要部分是

  

所请求的资源上没有“ Access-Control-Allow-Origin”标头。

如果您从中请求数据的服务器的标头中未包含您的来源。然后,您的浏览器将阻止加载该数据。而且您无能为力。

我阅读了crossorigin.me应该做的事情,但显然,它没有在响应中设置标头。我永远不建议使用代理从API提取数据。首先,您依靠代理来启动和运行(并且crossorin.me已经声明它不打算用于生产用途),其次,代理可能会为您提出所有请求,然后使用标头丰富em并将它们发送到您。因此,您应该真正信任该代理可以处理所有数据。