反应 API 获取失败

React API Fetch fail

我正在尝试创建一个网站,我将在该网站上使用 web-api 并显示 "users"。我有一个 API-key,我必须将其作为 "x-api-key".

放入 header

这是我目前的代码:

import React, { Component } from 'react';
import './App.css';

class App extends Component {

constructor(props) {
  super(props);
  this.state = {
    isLoaded: false,
    items: []
  }
}

componentDidMount() {


  const myHeaders = new Headers();

  myHeaders.append('x-api-key', 'KEY_HERE');
  myHeaders.append('Content-Type', 'application/x-www-form-urlencoded');
  myHeaders.append('cache-control', 'no-cache')

  fetch('URL_HERE', {
    method: 'GET',
    headers: myHeaders,
    async: true,
  })
  .then(res => res.json())
  .then(json => {
    this.setState({
      isLoaded: true,
      items: json,
    })
  });
}

  render() {
  var{isLoaded, items} = this.state;
  if(!isLoaded) {
    return <div>Loading...</div>;
  }

  else{
   return (
     <div className="App">
       <ul>
         {items.map(item => (
           <li key={item.id}>
             Name: {item.name} | Id:{item.id}
           </li>
         ))};
       </ul>
     </div>
   );
  }
}

}

导出默认应用;

问题是我在控制台中收到这些错误消息:

Failed to load http://URL/users: Response for preflight does not have HTTP ok status.

Uncaught (in promise) TypeError: Failed to fetch

当我尝试在 Postman 中进行 GET 调用时,我成功了。所以我想问题是 api-key 没有在 header 中正确实现。

感谢您的帮助,如果您还有其他需要了解的信息,请告诉我!

如果你想使用 api 获取数据,请尝试使用 axios。 它也可以在客户端和服务器端使用,也非常简单。 这是您的指南的 GitHub 存储库。 https://github.com/axios/axios

您需要从代码中删除以下行,然后,您需要处理来自 server-side 的 OPTIONS 方法。

myHeaders.append('cache-control', 'no-cache')

您收到此错误是因为您添加了 header 和 'x-api-key'。您使请求变得复杂。这需要浏览器发出预检 OPTIONS 请求以请求发送复杂请求的权限。

您向其发出请求的服务器正在响应说不允许对 URL

的 OPTIONS 请求

您将需要修改服务器并正确处理 OPTION 方法,以便它正确响应预检 CORS 请求。

您不会在 postman 中收到此错误,因为 Postman 不需要发出预检请求。