1

我一直在尝试从 riot 的 api 中获取一些数据,但我遇到了一个问题:

这是代码的重要部分:

const getUsuario = async (name) => {
  const resp = await fetch(`${APIRUL}${name}${apikey}`, {
    method: 'GET',
    mode: 'no-cors',
    headers: {
      "Content-Type": "application/json",
    },
  });
  const { data } = await resp.json();
  return data;
};

getUsuario("user-name");

如果我把模式: cors。我对 CORS 有疑问,但如果我有上面的示例,它会显示:

champions.js:15 Uncaught (in promise) SyntaxError: Unexpected end of input
    at getUsuario (champions.js:15)

这是第 15 行:

const { data } = await resp.json();
4

1 回答 1

0

我发现了与您在此处看到的类似的错误:fetch() 意外结束输入

在将其转换为 json 之前尝试打印响应并查看是否看到 type opaque。这特定于获取使用 mode 发出的请求no-cors。对于这种响应,您可以做什么似乎有很多限制。

更新: RiotGames api 服务器没有返回 CORS 标头是有原因的。他们很可能不希望您直接从浏览器访问他们的 API。您需要有一个后端为您发出这些 api 请求,然后可以将响应转发到您的前端。

于 2020-10-04T02:27:37.167 回答