我正在尝试从此地址 data source 获取数据
并且出现错误,我正在编写的代码是
(function(){
async function GetCovidNumbers(){
const url = "api.opencovid.ca/summary?loc=canada&date=01-09-2020";
//debugger;
const data = await fetch(url);
const response = await data.json();
console.log(response);
}
GetCovidNumbers();
})();
我遇到的错误是
一个错误给了我 404 错误,但如果我将 URL 放入浏览器中,我就会得到数据,另一个错误是
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
我尝试在网址前面添加 http://甚至 https://,但这不起作用。
所以我显然做错了什么,有人看到它是什么吗?
最佳答案
您需要指定协议(protocol)(http://
或 https://
),否则,它将被视为相对 URL。
现在,我发现该 API 不支持 HTTPS。如果您的站点使用 HTTP,这不是问题。但如果您的网站使用 HTTPS,那么浏览器将阻止该请求,因为 API 不安全。
在这种情况下,您可以使用 HTTPS 代理来发出请求。 CORS Anywhere就是这样的服务。
演示(需要几秒钟加载):
async function GetCovidNumbers() {
const corsPrefix = "https://cors-anywhere.herokuapp.com/";
const url = corsPrefix + "http://api.opencovid.ca/summary?loc=canada&date=01-09-2020";
const data = await fetch(url);
const response = await data.json();
console.log(response);
}
GetCovidNumbers();
关于javascript - 尝试从公共(public) api 获取 json 数据时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63874312/