尝试从此处的 NJTransit API 中卸载一些更新的巴士位置 - http://mybusnow.njtransit.com/bustime/map/getRoutePoints.jsp?route=87 - 返回非常基本的 XML。据我所知,没有 CORS 标头/策略,因此 Chrome 抛出错误并使用指向此问题跟踪器的指针阻止请求。
route='87';
function logResult(result) {
console.log(result);
}
function logError(error) {
console.log('Looks like there was a problem: \n', error);
}
function validateResponse(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
function readResponseAsXML(response) {
let responseDoc = new DOMParser().parseFromString(response, 'application/xml');
var oSerializer = new XMLSerializer();
var buses_xml = oSerializer.serializeToString(responseDoc);
return buses_xml;
}
function fetchXML(pathToResource) {
fetch(pathToResource, {mode:'no-cors'}) // 1
.then(validateResponse) // 2
.then(readResponseAsXML) // 3
.then(logResult) // 4
.catch(logError);
}
fetchXML('http://mybusnow.njtransit.com/bustime/map/getRoutePoints.jsp?route='+ route);
有没有办法解决?我知道这是一个基于浏览器的问题,我可以从服务器发出调用,一切都会好起来的,但这正是我想要摆脱的。当前的解决方案是从服务器获取这些更新并通过我自己的服务器 API 将它们传递给客户端。我想把自己作为中间人,让客户自己获取更新的职位。
让数据源 (NJT) 对其 API 设置进行任何更改的可能性非常低。
谢谢