获取返回我自己的 index.html 的 html 源代码

IT技术 javascript reactjs fetch
2021-05-26 14:52:38

我正在尝试在 react-create-app 服务器(localhost:3000)中使用 fetch 从我的 apache(localhost:80)获取静态 .json 文件,但它返回我的 react 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())});
3个回答

彻头彻尾的问题是使 react-create-app 与本地服务器一起工作,这在本指南中进行了解释https://daveceddia.com/create-react-app-express-backend/

简而言之,我需要在 package.json 中放置一个代理属性,其值等于我本地服务器的地址。就我而言:

  "proxy": "http://localhost:80"

尝试一个完全限定的 URL:

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://

在我的情况下,我正在打电话fetch("/path/to/some/api")并得到这个结果。问题是fetch默认情况下不会在请求中发送身份验证信息(在我的情况下,用户通过会话 cookie 进行身份验证),并且我的 API 拒绝了请求并出于某种原因发出重定向到/.

解决方案:

window.fetch("/path/to/some/api", { credentials: true });

另外,是什么帮助我调试了问题:

window.fetch("/path/to/some/api", { redirect: "error" });

通过上述,导致重定向的服务器调用被拒绝。