2014-11-02 114 views
2

我有兩個nodejs應用程序,服務器1運行UI代碼,服務器2提供後端邏輯和api服務。我試圖從服務器1中的UI應用程序調用$ .post jquery方法,在服務器2中發佈到API,我得到跨域限制錯誤,節點Express CORS請求

我在app.js中添加了以下代碼, UI服務器(服務器1)中的index.js,但不是徒勞的。

app.js文件

enter code here 

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', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); 
    next(); 
}); 

路線/ index.js文件

router.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', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); 
    next(); 
}); 

我是新來的NodeJS /快遞。

+0

您是否嘗試過使用['cors'](https://github.com/troygoode/node-cors)中間件而不是嘗試手動操作? – mscdex 2014-11-02 04:17:14

回答

3

確保您的快速應用程序實際上響應了CORS OPTIONS請求。首先在POST之前發送臨時HTTP OPTIONS請求的瀏覽器。您的代碼會設置標題,但不會實際發送回覆。例如:

router.options('/my/post/path', function (req, res) { 
    console.log('Got CORS OPTIONS request for', req.originalUrl); 
    res.send(); 
}); 

但最終由於mscdex評論,使用npm中的cors中間件庫而不是自己編碼。 (雖然編碼你自己是一個很好的學習練習)。

+0

我將CORS添加到它的服務器代碼中,這要感謝你們的幫助。有趣的是Cors npm在heroku中給我帶來了問題。 – realnumber 2014-11-02 20:06:25