我正在尝试在react-create-app服务器(localhost:3000)中使用fetch从我的apache(localhost:80)获取静态.json文件,但它返回了我的反应index.html文件的来源!
指定端口号会导致“网络错误”
const that=this;
fetch("localhost/myapp/data/structure.json").then((res)=> {return res.text()})
.then(((data)=>{that.setState({structure: data})})).catch((e)=>{alert(e.toString())});
答案 0 :(得分:2)
彻头彻尾的问题是使react-create-app与本地服务器一起工作,本指南中对此进行了解释https://daveceddia.com/create-react-app-express-backend/
简而言之,我需要在package.json中放置一个代码属性,其值等于我本地服务器的地址。就我而言:
"proxy": "http://localhost:80"
答案 1 :(得分:0)
尝试使用完全限定的网址:
const that=this;
fetch("http://localhost/myapp/data/structure.json").then((res)=> {return res.text()})
.then(((data)=>{that.setState({structure: data})})).catch((e)=>{alert(e.toString())});
请注意http://
答案 2 :(得分:0)
在我的情况下,我打电话给fetch("/path/to/some/api")
,并得到了这个结果。问题是默认情况下,fetch
不在请求中发送身份验证信息(在我的情况下,用户通过会话cookie进行身份验证),并且我的API拒绝了该请求,并出于某种原因发出了重定向到{{1 }}。
解决方案:
/
此外,是什么帮助我调试了问题:
window.fetch("/path/to/some/api", { credentials: true });
通过上述操作,导致重定向的服务器调用被拒绝。