加载资源失败:当尝试访问 public API 时,服务器响应从 HTML 中嵌入的 JS 收到的状态 403 ()
Failed to load resource: the server responded with a status of 403 () received from a JS embedded in an HTML when trying to access a public API
这个API是public,如您所见,访问是免费的:
https://prod-public-api.livescore.com/v1/api/react/date/soccer/20210803/1.00
但是当我 运行 我的 HTML 时,在 Chrome 控制台中出现错误:
Failed to load resource: the server responded with a status of 403 ()
我该怎么办?
这是我的脚本代码,它使用从 API 收集的数据创建一个下拉框:
var $select = $('#matches');
$.getJSON('https://prod-public-api.livescore.com/v1/api/react/date/soccer/20210803/1.00',function(data){
$select.html('');
$select.append('<option id="DropDownBox">' + "Escolher Jogo" + '</option>')
for (var i = 0; i < data['Stages'].length; i++) {
for (var z = 0; z < data['Stages'][i]['Events'].length; z++) {
$select.append('<option id="' + data['Stages'][i]['Events'][z]['Eid'] + '" data-stages="' + i + '" data-events="' + z + '">' + data['Stages'][i]['Events'][z]['T1'][0]['Nm'] + " v " + data['Stages'][i]['Events'][z]['T2'][0]['Nm'] + '</option>')
}
}
});
注:
至 运行 我的 HTML 我使用 Live Server(Visual Studio 代码扩展)并发布 CORS 以访问外部 link,我使用扩展 Chrome 访问控制允许来源 (https://mybrowseraddon.com/access-control-allow-origin.html)
如果您在浏览器中转到 https://prod-public-api.livescore.com
,那么他们的服务器会在发出请求时接收该特定域,他们已将自己的域列入白名单以便能够发出请求。
当您在 https://example.com
上并尝试 fetch('https://prod-public-api.livescore.com...')
时,CORS 将被拒绝,因为现在他们的服务器正在接收“https://example.com”作为请求域.
您得到的 403 是因为被 CORS 拒绝。
您可以创建自己的 API 并在数据服务器端获取数据,然后调用您自己的 API 来获取它。
这个API是public,如您所见,访问是免费的:
https://prod-public-api.livescore.com/v1/api/react/date/soccer/20210803/1.00
但是当我 运行 我的 HTML 时,在 Chrome 控制台中出现错误:
Failed to load resource: the server responded with a status of 403 ()
我该怎么办?
这是我的脚本代码,它使用从 API 收集的数据创建一个下拉框:
var $select = $('#matches');
$.getJSON('https://prod-public-api.livescore.com/v1/api/react/date/soccer/20210803/1.00',function(data){
$select.html('');
$select.append('<option id="DropDownBox">' + "Escolher Jogo" + '</option>')
for (var i = 0; i < data['Stages'].length; i++) {
for (var z = 0; z < data['Stages'][i]['Events'].length; z++) {
$select.append('<option id="' + data['Stages'][i]['Events'][z]['Eid'] + '" data-stages="' + i + '" data-events="' + z + '">' + data['Stages'][i]['Events'][z]['T1'][0]['Nm'] + " v " + data['Stages'][i]['Events'][z]['T2'][0]['Nm'] + '</option>')
}
}
});
注:
至 运行 我的 HTML 我使用 Live Server(Visual Studio 代码扩展)并发布 CORS 以访问外部 link,我使用扩展 Chrome 访问控制允许来源 (https://mybrowseraddon.com/access-control-allow-origin.html)
如果您在浏览器中转到 https://prod-public-api.livescore.com
,那么他们的服务器会在发出请求时接收该特定域,他们已将自己的域列入白名单以便能够发出请求。
当您在 https://example.com
上并尝试 fetch('https://prod-public-api.livescore.com...')
时,CORS 将被拒绝,因为现在他们的服务器正在接收“https://example.com”作为请求域.
您得到的 403 是因为被 CORS 拒绝。
您可以创建自己的 API 并在数据服务器端获取数据,然后调用您自己的 API 来获取它。