无法从 React 应用进行 Node API 调用
2017-08-05
1091
我正在从运行在端口 3000 上的 React 应用向运行在端口 8080 上的 Node API 发出 API 调用。我收到以下错误:
XMLHttpRequest 无法加载 http://localhost:8080/register 。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源 ' http://localhost:3000 '。
我的 React 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();
});
我仍然无法将数据发布到数据库。任何建议都会对我有很大帮助。谢谢。
1个回答
选项 1:
npm install cors
var cors = require('cors');
app.use(cors());
选项 2: 或者使用 setHeader 方法,而不只是使用 header
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();
});
Rahil
2017-08-05