通过 fetch() 调用 API - 意外的输入结束

我想将 API 调用(外部源,没有机会在 API 端更改某些内容)从 PHP 更改为 Javascript(学习目的)。


由于跨域,我使用 fetch()。当我运行我的脚本时,我收到一个意外的输入错误结束并且无法弄清楚原因。


function postData(url = '', data = {}) {

  var headers = new Headers();

  headers.set('Authorization', 'Basic ' + window.btoa("user" + ':' + "pass"));

  return fetch(url, {

    method: 'POST',

    mode: 'no-cors',

    cache: 'no-cache',

    credentials: 'include',

    headers: {

      'Content-Type': 'application/json'

    },

    redirect: 'follow',

    referrer: 'no-referrer',

    body: JSON.stringify(data),

  }).then(response => response.json()).catch(error => console.error(error));

}


postData('https://www.api-endpoint.com/cat1/api/search?', {

  "searchID": "710",

  "isTagged": true

}).then(data => console.log(JSON.stringify(data))).catch(error => console.error(error));

如何识别此代码的问题?看来授权没问题。我按照 API Dev 的手册中的描述实现了搜索参数(searchID 和 isTagged)。


富国沪深
浏览 186回答 1
1回答

精慕HU

您说mode: 'no-cors',这会禁用需要 CORS 权限的所有内容。由于跨源读取数据需要 CORS 权限,因此没有数据。尝试将空字符串解析为 JSON 会导致输入意外结束,因为输入在出现任何 JSON 之前就结束了。(请注意,其他需要 CORS 权限以及您正在尝试执行的操作包括将内容类型设置为 JSON 并包括凭据)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript