-2

从旧版 Laravel 应用迁移到 React 前端。使用 Fetch 调用 API。它适用于 laravel(使用 fopen 和 stream_get_contents 获取数据),所以我知道这不是服务器问题,因为使用相同的本地主机。但是对于 React,使用 fetch 从 api 抓取数据却得到这个错误: 在此处输入图像描述

我已将内容类型更改为 application/json 以匹配标头,但仍然没有。我的回复正文是空的。当我转到 API 链接时,我得到一个 xml 文件,因此该链接有效,我可以在浏览器上看到它,但我的反应应用程序没有保存响应正文信息。

   apiCall = () => {
    const exampleAPILink = 'My_API_URL'
    const config = {
    method: 'GET',
    mode: 'no-cors',
    headers: {
    'Content-Type': 'application/json',
    }
   };
fetch(exampleAPILink, config).then(function(response){
  console.log(response.body);
  //null
}).catch(function(error){
  console.log(error);
});

}

*我需要 'no-cors' 否则会收到 CORS 禁止访问错误。

4

1 回答 1

2

no-cors意味着您告诉 fetch 您不打算做任何需要 CORS 许可的事情,并且它不应该要求它。

问题是您正在做一些需要 CORS 许可的事情。您正在尝试读取跨域响应。

结果是 CORBs 错误。

您需要更改模式cors并更改您从中请求数据的服务器,以便授予权限。


您正在发出 GET 请求。Content-Type在上面设置标题是没有意义的。没有描述类型的请求正文。

您可能会对Content-Type.Accept

application/json不是一个简单的 Content-Type,所以你不仅需要 CORS 权限来读取响应,而且浏览器会发送一个预检请求来请求权限以首先发送请求。

不要Content-Type在 GET 请求上设置标头。

于 2018-10-17T19:38:43.037 回答