ajax 与 err_connection_refused,jQuery AJAX到节点服务器抛出net :: ERR_CONNECTION_REFUSED

我禁用了我的防火墙(在Ubuntu 15.04服务器上的ufw)。这似乎是这个问题最常见的原因。jQuery AJAX到节点服务器抛出net :: ERR_CONNECTION_REFUSED

另外一些人在使用AJAX时遇到了问题,所以我尝试了使用ajax和https POST请求。我的代码如下:

jQuery的发出请求:

testData = {

email : address,

subject : subject,

body : body,

meetingId : meetingId

};

testData = JSON.stringify(testData);

$.ajax({

url: "https://localhost:3000/sendICSInvite",

contentType: "application/json; charset=utf-8",

data: testData,

type: "POST",

success: function(result) {

console.log("request might have worked");

console.log(result);

},

error: function (err) {

console.log(err);

}

});

向该路线:

var api = require("../controllers/main.js");

//API ROUTES

module.exports = function(app){

app.post('/sendICSInvite', api.sendEmail);

};

控制器:

module.exports.sendEmail = function (req, res) {

console.log("sending Email (probably not actually)");

});

这可以用邮递员和被称为作品完美无瑕。当我从jQuery的一个电话,但是,它失败并返回错误:

OPTIONS https://localhost:3000/sendICSInvite?email=myemail%40myprovider.com&subject=TE…+emails&body=Just+testing+the+function+for+autmoated+email&meetingId=33033 net::ERR_CONNECTION_REFUSEDsend

@ jquery.js:4m.extend.ajax

@ jquery.js:4sendEmail

@ caseman.js:706(anonymous function)

@ VM4606:2InjectedScript._evaluateOn

@ VM4491:875InjectedScript._evaluateAndWrap

@ VM4491:808InjectedScript.evaluate

@ VM4491:664

似乎与在OPTIONS请求(我不知道这个是送的,我在阿贾克斯sepcifiy POST类型),这使我在我的节点服务器这个提议的解决方案:

app.use(function(req, res, next) {

res.header('Access-Control-Allow-Origin', "*");

res.header('Access-Control-Allow-Methods',"GET,PUT,POST,DELETE,OPTIONS");

res.header('Access-Control-Allow-Headers', "*");

next();

});

但即使有这样的中间件功能的误差保持不变。节点服务器使用VMware Workstation并运行Ubuntu 15.04服务器版,在虚拟机箱上的端口3000上运行。包含了jQuery的网站,我想发出这个请求通过Perl脚本担任端口80

2016-01-11

awimley