2017-08-05 29 views
0

我正在從API調用反應程序在端口3000上運行到節點API端口8080.And運行我得到的錯誤是:不能使節點API調用從反應程序

的XMLHttpRequest無法加載http://localhost:8080/register。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「Access-Control-Allow-Origin」標頭。因此不允許訪問原產地'http://localhost:3000'。

我的反應API調用:

export const addUser=(data) =>{ 
console.log(data); 
return function(dispatch,data){ 
axios.post('http://localhost:8080/register',{ 
    phone:data.phone, 
    password:data.password, 
    first_name:data.fname, 
    last_name:data.lname, 
    dob:data.dob, 
    gender:data.gender 
}) 
.then(response =>{ 
    console.log('data submitted successfully'); 
    dispatch({ 
    type : AddUser, 
    User : data 
    }) 
}).catch(err =>{ 
    console.log(err); 
}) 
} 
} 

而且我的服務器端代碼在node.js中,我包括標題爲:

app.use(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(); 
}); 

我還不能發表我的數據我的數據庫..任何建議將真的幫助我。謝謝。

回答

5

選項1:

npm install cors 


var cors = require('cors'); 
app.use(cors()); 

選項2: 或使用方法的setHeader,而不僅僅是標題

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


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


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

    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); 

    res.setHeader('Access-Control-Allow-Credentials', true); 

    // Pass to next layer of middleware 
    next(); 
}); 
+0

謝謝...選項1爲我工作。 – Candy

相關問題