Fetch returns html source of the my own index.html

Viewed 6644

I am trying to use fetch in an react-create-app server(localhost:3000) to get a static .json file from my apache(localhost:80) but it returns source of my react index.html file!

Specifying port number results in "networking error"

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 Answers

In my situation, I was calling fetch("/path/to/some/api") and getting this result. The problem was that fetch by default does not send authentication info in the request (in my case users are authenticated by a session cookie), and my API was rejecting the request and for some reason issuing a redirect to /.

The solution:

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

Also, what helped me debug the problem:

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

With the above, server calls which resulted in redirects were rejected.

Related