【发布时间】:2021-06-09 20:16:08
【问题描述】:
我有一个非常简单的 React 应用程序,我试图在其中对托管在 localhost:5000 上的 Flask API 进行 api 调用。这是 fetch 方法:
//Fetch all forms from database
useEffect(() =>{
setIsLoading(true);
fetch('/api/forms').then(response =>{
if(response.ok){
return response.json();
}
}).then(data => console.log(data));
}, []);
我还在我的 package.json 中添加了这一行,很多人推荐: "proxy": "http://localhost:5000/",。
我也尝试过fetch('http://MY-IPV4-ADDRESS:5000/forms') 和fetch('localhost:5000/forms'),但没有成功。
浏览器控制台中的错误只是显示“加载资源失败:net::ERR_CONNECTION_REFUSED”
如果我只是打开一个网络浏览器并导航到localhost:5000/forms,我会得到正确的响应,包括所有表单数据。
然后我尝试了fetch('http://127.0.0.1:5000/forms'),它给了我来自 API 的 200 响应,这通常意味着它成功,但在浏览器控制台中显示“访问 'http://127.0.0.1:5000/forms' 获取来自来源“http://localhost:3000”已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“否” -cors' 来获取禁用 CORS 的资源。”
我还有一个 React Native 应用程序,它可以像这样进行相同的 api 调用:
//Fetch all formsfrom database
useEffect(() =>{
setIsLoading(true);
fetch('http://10.0.2.2:5000/forms').then(response =>{
if(response.ok){
return response.json();
}
}).then(data => setFullData(data)).then(setIsLoading(false));
}, []);
尽管这在 React Native 应用程序中运行良好,但我尝试过但无济于事。
这是项目的文件结构,只是为了让您了解所有内容的位置:
我做错了什么?
【问题讨论】:
-
原因可能不同。你检查后端的日志吗? api 是否调用“来到”那里,如果是,您的后端如何对它们做出反应?浏览器控制台有什么错误吗?
-
我刚刚意识到我遗漏了一些细节给我一些,我会解决这个问题。我很抱歉。
-
好的,我添加了我能添加的所有信息,但这些信息并不多。我到底在哪里可以找到“后端日志”? React 应用程序中没有日志,API 日志显示“GET /forms HTTP/1.1”200 - 这通常意味着它有效。