Javascript 函数的作用是:导致资源被CORS阻止

Javascript 函数的作用是:导致资源被CORS阻止,javascript,reactjs,Javascript,Reactjs,App.js: import React from 'react'; import './App.css'; class App extends React.Component { state = { character : {} }; componentDidMount() { fetch("https://jobs.github.com/positions.json?description=basf") .then(data => cons

App.js:

import React from 'react';
import './App.css';

class App extends React.Component {

  state = {
    character : {}
  };

  componentDidMount() {
    fetch("https://jobs.github.com/positions.json?description=basf")
      .then(data => console.log(data));
    console.log("Hello World");
  }

  render() {
    return (
      <div className="App">
        <h2>Hello World</h2>
      </div>
    );
  }
}

export default App;
从“React”导入React;
导入“/App.css”;
类应用程序扩展了React.Component{
状态={
字符:{}
};
componentDidMount(){
取回(“https://jobs.github.com/positions.json?description=basf")
.then(data=>console.log(data));
log(“你好世界”);
}
render(){
返回(
你好,世界
);
}
}
导出默认应用程序;
错误消息-

取 "来源" “”已被CORS策略阻止:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。如果不透明的响应满足您的需要,请设置请求的 模式设置为“无cors”,以获取禁用cors的资源

无法获取


你能告诉我如何通过这个问题并获得所需的数据吗。我正在使用Github Jobs API并显示此消息。

这里有几种方法可以完成此任务

一个

import React from 'react';
import './App.css';

class App extends React.Component {

  state = {
    character : {}
  };

  componentDidMount() {
    fetch("https://jobs.github.com/positions.json?description=basf",{
                headers: {
                  'Content-Type': 'application/json',
                  'Access-Control-Allow-Origin': '*'
                })
      .then(data => console.log(data));
    console.log("Hello World");
  }

  render() {
    return (
      <div className="App">
        <h2>Hello World</h2>
      </div>
    );
  }
}

export default App;

试试这个

如果您面临cors问题,您可以从前端解决此问题。使用-

https://cors-anywhere.herokuapp.com/{在此处键入您的url}

  componentDidMount(){
    fetch('https://cors-anywhere.herokuapp.com/https://jobs.github.com/positions.json?description=basf'
    )
    .then(data => data.json())
    .then(data=>console.log(data))
  }

正在工作

您需要使用无cors标题

 fetch("https://jobs.github.com/positions.json?description=basf", {
      mode: "no-cors" // 'cors' by default
    }).then(data => console.log(data));
看看这个


我希望这个答案对您有所帮助:)

通过使用CreateReact应用程序代理功能,您可以解决这个问题

将代理属性添加到包中。json:

{
// ...
代理:“https://jobs.github.com"
}
然后调用fetch函数:

fetch(“http://localhost:300/positions.json?description=basf")
.then(data=>console.log(data));

这是否回答了您的问题?你不需要传递凭证才能访问那个API吗?这是可行的,但是使用
https://cors-anywhere.herokuapp.com/
?@nibble否。。。您可以使用,因为它在内部实现了保护HTTP调用的安全。由于服务器已关闭,因此现在不可用。
 fetch("https://jobs.github.com/positions.json?description=basf", {
      mode: "no-cors" // 'cors' by default
    }).then(data => console.log(data));