2016-01-11 31 views
1

我禁用了我的防火牆(在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

回答

0

data: JSON.stringify(testdata),

這可能是你的問題。你需要序列化你的json對象。您需要將.ajax調用設置爲選項中的POST類型,否則它將默認爲get。

+0

有什麼額外的信息會有用?明天我會試試這個解決方案,今天晚上我正忙於另一個項目。 – awimley

+0

嘗試更改'res.header('Access-Control-Allow-Origin',「*」);'res.header('Access-Control-Allow-Origin',true); 。 – wrleskovec

+0

我已經嘗試了這兩種方法,並且錯誤消息保持不變。 – awimley

相關問題