1

我正在尝试通过他们的 API 加载 Behance 项目数据。无论是本地主机还是产品,我都会收到以下错误 -

Fetch API 无法加载 XXX。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:5000 ”。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

不知道如何解决这个问题。我在下面 Portfolio 组件中的代码——

getPortfolio = () => {

const USER_ID = `XXX`,
      PROJECT_ID = `XXX`,
      API_KEY = `XXX`;

const BEHANCE_URL = `https://api.behance.net/v2/users/${USER_ID}/projects?client_id=${API_KEY}`;
console.log(BEHANCE_URL);

fetch(BEHANCE_URL, {
  method: 'get',
  dataType: 'jsonp',
  headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
  }
}).then((response) => {
  return response.json();
}).then((responseData) => {
  return responseData;
}).catch((err) => {
  return err;
});

}

更新:而不是获取,使用 jQuery ajax 作品。--

$.ajax({
  url: BEHANCE_URL,
  type: "get",
  data: {projects: {}},
  dataType: "jsonp"
}).done((response) => {
  this.setState({
    portfolioData: response['projects']
  });
}).fail((error) => {
  console.log("Ajax request fails")
  console.log(error);
});
4

1 回答 1

-1

这似乎对 React 做的更少,而对 Behance 做的更多。您可能已经知道,您得到的是CORS 错误。简短的解释是,CORS 是一种放在浏览器上的安全措施,因此网站无法从浏览器请求其他网站看起来是第二个网站。这是一种安全措施,可以防止某些网络钓鱼攻击。

服务器(在本例中为 Behance)可以禁用 CORS,但出于正当理由他们决定不禁用。

Behance 可能会允许您改为从服务器发出您尝试发出的请求。一旦你这样做了,你将需要从你的服务器获取信息到你的 React 应用程序,你就可以开始了!

于 2017-05-02T19:53:58.300 回答