Чтобы упростить понимание, рассмотрите следующий код:
<script type="text/javascript">
var subscriberId = '12345';
</script>
<script type="text/javascript" src="https://example.com/main.js"></script>
То, чего я пытаюсь добиться, - это создать то же поведение из приведенного выше кода, используя api fetch.
Я использую Google AMP, так что это не будет проверять.
В настоящее время я пытаюсь создать сервисного работника и запустить оттуда JavaScript. На обычной html-странице приведенный выше фрагмент возвращал бы ответ с удаленного сервера (я попробовал и проверил его) с объектом json, который виден в «XHR and Fetch» в инструментах Chrome Dev.
Дело в том, что из-за политики cors я не могу использовать POST, а только (?) GET.
Итак, я пришел с кодом ниже:
function validateResponse(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
function readResponse(response) {
return response();
}
function logResult(result) {
console.log(result);
}
function logError(error) {
console.log('Looks like there was a problem: \n', error);
}
function fetchUrl(pathToResource) {
fetch(pathToResource, {
method: "GET",
mode: 'no-cors',
credentials :'include',
headers: new Headers({
'Accept': 'text/html',
'Content-Type': 'application/javascript;charset=UTF-8',
'Cache': 'no-cache',
'subscriberId': '12345'
}),
})
.then(validateResponse)
.then(readResponse)
.then(logResult)
.catch(logError);
}
fetchUrl('https://example.com/main.js');
И я получаю в консоли
Looks like there was a problem:
Error
at validateResponse
Может ли кто-нибудь рассказать о проблеме?
Очевидно, это непрозрачный ответ, и я не знаю, как с этим справиться.