我禁用了我的防火牆(在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
有什麼額外的信息會有用?明天我會試試這個解決方案,今天晚上我正忙於另一個項目。 – awimley
嘗試更改'res.header('Access-Control-Allow-Origin',「*」);'res.header('Access-Control-Allow-Origin',true); 。 – wrleskovec
我已經嘗試了這兩種方法,並且錯誤消息保持不變。 – awimley