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

时间:2017-06-30 17:50:50

标签: javascript reactjs fetch

我正在尝试在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())});

3 个答案:

答案 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 });

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