NodeJS 用户如何通过主机身份验证/连接从SQL Server访问/保存数据

mzsu5hc0  于 2023-06-22  发布在  Node.js
关注(0)|答案(2)|浏览(108)

我已经在内部网中部署了一个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"
ig9co6j1

ig9co6j11#

问题是您正在向http://localhost:4000/data发出axios请求。localhost是指发出请求的同一台机器。这在您的机器(主机)上工作正常,因为服务器在同一台机器上运行。但是,对于网络上的其他用户,localhost指的是他们自己的机器,而不是您的主机。
为了解决这个问题,您应该将localhost替换为运行服务器的主机的IP地址。
axios调用应该如下所示:

let res = await axios({
    url: 'http://10.xx.101.xx:4000/data',
    method: 'get',
    timeout: 8000,
    headers: {
        'Content-Type': 'application/json',
    }
})

请务必将10.xx.101.xx替换为计算机的实际IP地址。进行此更改后,网络上的其他用户应该能够从您计算机上运行的服务器检索数据。
另外,请注意您的package.json设置"proxy":“10.xx.101.xx:4001”在这里不会有任何影响。开发服务器使用proxy设置来避免开发期间的CORS问题,但它不会更改从已部署应用程序发送axios请求的位置。

a7qyws3x

a7qyws3x2#

乔伊指出了为什么会这样的问题。为了使你的本地主机对其他机器可见,另一个快速的方法是使用ngrok将你的本地主机暴露给互联网。

相关问题