无法通过react app进行节点api调用

Can*_*ndy 0 api node.js reactjs

我正在从在端口3000上运行的反应应用程序到在端口8080上运行的节点api进行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);
})
}
}
Run Code Online (Sandbox Code Playgroud)

我的服务器端代码在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();
});
Run Code Online (Sandbox Code Playgroud)

我仍然无法将数据发布到我的数据库..任何建议都会对我有所帮助.谢谢.

Rah*_*hil 9

选项1:

npm install cors


var cors = require('cors');
app.use(cors());
Run Code Online (Sandbox Code Playgroud)

选项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();
});
Run Code Online (Sandbox Code Playgroud)