0

为了使事情更容易理解,请考虑以下代码:

<script type="text/javascript">
  var subscriberId = '12345';
</script>
<script type="text/javascript" src="https://example.com/main.js"></script>

我试图实现的是如何使用 fetch api 创建与上述代码相同的行为。我使用 Google AMP,所以这不会验证。我目前正在尝试做的是创建一个服务工作者,并从那里运行 JavaScript。在一个普通的 html 页面中,上面的代码片段会从远程服务器返回一个响应(我试过并验证了它),并带有一个 json 对象,该对象在 chrome 开发工具的“XHR and Fetch”中可见。问题是由于 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

有人可以对这个问题提供一些见解吗?显然这是一个不透明的响应,我不知道如何处理它。

4

0 回答 0