发送发送请求到节点服务器时没有得到响应

我正在使用Express与节点js。 如果我运行我的HTML模板在不同的主机或服务器(除了我的应用程序正在运行),那么我没有得到任何回应。

如果我从托pipe在同一台服务器上的文件向节点服务器发送请求,那么它会成功地给出一个JSON响应。

我想创build一个REST API应用程序,所以每个人都可以发布请求并使用响应数据。

我的HTML文件的代码(在节点服务器上本地运行):

<script type="javascript"> function submitit() { var name = $('#name').val(); var id = $('#pw').val(); var obj = { name: name, id: id }; //posting on node server $.post('http://localhost:3001/user', { data1: obj }, function (data, status) { alert(data); //window.location.href = "http://google.com"; }, 'json') } </script> <body> <h1 class="hone">Log in to site.</h1> <form method = "post" id="yourform"> user id :<input type="text" id='name' name="userid" /><br /> password :<input type="text" id='pw' name="password" /><br /> </form> <input id="formsubmit" type="button" onclick='submitit();' value="login" /><br /> <div id="flash"></div> </body> 

节点服务器上的app.js:

 app.post("/user", function (req, res) { console.log("ok"); //var h=req.params.name; var user = { "name": "sdf", "add": "f" }; //var r = req.body.name; console.log(user); console.log(req.body.data1); res.json(user); }); 

这是工作正常,如果我从同一主机请求,但如果从一个文件发送请求不同的机器不工作。

得到解决scheme,只需添加中间件进行跨域通信

添加波纹pipe中间件到app.js或脚本代码。

 var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); } app.use(allowCrossDomain);