Как использовать FETCH API при использовании GET и установить переменную без заголовка? - PullRequest
0 голосов
/ 09 ноября 2018

Чтобы упростить понимание, рассмотрите следующий код:

<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

Может ли кто-нибудь рассказать о проблеме? Очевидно, это непрозрачный ответ, и я не знаю, как с этим справиться.

...