Попытка разгрузить некоторую выборку обновленных позиций шины из 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 очень мала.
Спасибо