应用程序在127.0.0.1上运行良好,但从其他设备访问时则不然



我设法用nodejs发布了我的应用程序,并且我可以从网络中的设备访问它(请注意,它将只是一个本地应用程序(。这是一个用于控制连接到我的网络的其他硬件的应用程序。

我现在遇到的问题是,当我从127.0.0.1:8081从托管该应用程序的本地PC打开它时,该应用程序运行良好,但如果我试图使用托管PC 192.168.z:8801的IP从另一台设备(甚至从托管PC本身(打开它,javascript文件不起作用,我的意思是。

我有一个config.js文件,里面保存了我的应用程序运行所需的配置数据,比如我控制的设备的IP。

var config = {
URL: '192.168.0.2',
}

然后我有一个Model.js文件,其中有SetData和GetData,它们都依赖于config。URL来执行他们的AJAX请求,但是配置。URL保持为null,其硬编码仍然为null!

当我运行应用程序并进行配置时。控制台中的URL,即使我在控制台配置中手动设置它,我也会得到null。URL='192.168.0.2',然后尝试调用Model.SetData…..或Model.GetData…他们仍然看不到,他们仍然试图向发送请求http://null/......

这是我的节点代码:

const express = require("express");
const app = express();
const port = 8081
app.use(express.static('public'))
app.use('/css', express.static(__dirname + '/public/css'));
app.use('/js', express.static(__dirname + '/public/js'));
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));

我试过使用和不使用该应用程序。use(/css和/js行代码,无更改

以下是如何将我的JS添加到我的html 中

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Robot Stuff</title>
<script type="text/javascript" src="./js/jquery-3.5.0.js"></script>
<script type="text/javascript" src="./assets/scripts/main.js"></script>
<script type="text/javascript" src="./js/easy-numpad.js"></script>
<script type="text/javascript" src="./js/jquery-modal.js"></script>
<script type="text/javascript" src="./js/Model.js"></script>
<script type="text/javascript" src="./js/UI.js"></script>
<script type="text/javascript" src="./js/config.js"></script>
<link href="./css/main.css" rel="stylesheet" type="text/css" >
<link href="./css/easy-numpad.css" rel="stylesheet" type="text/css" >

同样,如果我从http://127.0.0.1:8081,或者如果我直接双击我的index.html文件,一切都很好,但当我使用电脑的实际IP远程访问它时,它就会崩溃。

我不想过于复杂,我只是想明确地使用node,让应用程序在我的网络上可用,仅此而已。

您需要在服务器脚本中允许跨源策略。这将使您能够接受来自其他设备的请求标头。

npm i cors --save

或者你也可以按照这个指南在nodejs 中启用CORS

如果您的服务器正在使用0.0.0.0127.0.0.1,请与netstat -nlp联系。这可能是本地主机之外无法访问的问题之一。

最新更新