【发布时间】:2019-12-03 16:00:50
【问题描述】:
我正在开发与第 3 方 API 集成的 ReactJS 应用程序。我可以使用 Postman 成功执行相同的请求,但是在浏览器中从 React 应用程序执行时它们被阻止。当我引用自己的后端时,我知道 CORS 以及如何解决问题,但在这种情况下,我显然不能。我试图用几个 JS 模块来做类似的事情,但每个都得到相同的错误。
Access to fetch at 'http://api.example.com/resource/request?param=value' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
import React, {Component} from 'react';
import fetch from 'fetch';
import request from 'request';
class App extends Component {
render() {
return (
<div className="App">
<button onClick={this.sendWithXmlHttpRequest}>send XMLHttpRequest
</button>
<button onClick={this.sendWithFetch}>send Fetch</button>
<button onClick={this.sendWithRequest}>send Eequest</button>
</div>
);
};
sendWithXmlHttpRequest = () => {
let req = new XMLHttpRequest();
req.open('get', url, true);
req.send();
};
sendWithFetch = () => {
fetch.fetchUrl(url, (error, meta, body) => {
console.log(error, meta, body);
});
};
sendWithRequest = () => {
request.get(url);
};
}
const url = 'http://api.example.com/resource/request?param=value';
export default App;
【问题讨论】:
标签: reactjs cors xmlhttprequest