我已经在内部网中部署了一个react项目。其他PC可以通过我的IP地址访问页面(如10.xx.101.xx:4000/页)
由于页面的数据来自SQL Server,通过axios/ODBC/express访问。每次刷新该页时,该页都将从SQL Server请求数据(F5)。
对于此设置,我的pc(主机)可以成功显示所有数据。但是,其他用户无法捕获数据并弹出错误。我该如何处理这个问题?非常感谢!!
useEffect(() => {
async function getData() {
try {
let res = await axios({
url: 'http://localhost:4000/data',
method: 'get',
timeout: 8000,
headers: {
'Content-Type': 'application/json',
}
})
if(res.status == 200){
// test for status you want, etc
console.log(res.status)
}
// Don't forget to return something
return res.data
}
catch (err) {
console.error(err);
}
}
getData()
.then(res => {setSourceData(res)});
},[])
package.json设置
"proxy": "10.xx.101.xx:4001"
2条答案
按热度按时间ig9co6j11#
问题是您正在向
http://localhost:4000/data
发出axios请求。localhost
是指发出请求的同一台机器。这在您的机器(主机)上工作正常,因为服务器在同一台机器上运行。但是,对于网络上的其他用户,localhost
指的是他们自己的机器,而不是您的主机。为了解决这个问题,您应该将
localhost
替换为运行服务器的主机的IP地址。axios调用应该如下所示:
请务必将
10.xx.101.xx
替换为计算机的实际IP地址。进行此更改后,网络上的其他用户应该能够从您计算机上运行的服务器检索数据。另外,请注意您的
package.json
设置"proxy"
:“10.xx.101.xx:4001”在这里不会有任何影响。开发服务器使用proxy
设置来避免开发期间的CORS问题,但它不会更改从已部署应用程序发送axios请求的位置。a7qyws3x2#
乔伊指出了为什么会这样的问题。为了使你的本地主机对其他机器可见,另一个快速的方法是使用
ngrok
将你的本地主机暴露给互联网。