I’m fetching data from my backend api with axios. it’s giving me error that no access-control-allow-origin
header present.
middleware code in index.js of backend api
// CORS Middleware
let allowCrossDomain = function(req, res, next) {
console.log('req received');
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', '"Origin, X-Requested-With, Content-Type, Accept"');
next();
}
app.use(allowCrossDomain);
buit my browser gives me errors
xhr.js:173 GET https://d52890213a1f40XXXXXXbe65ab4e.vfs.cloud9.ap-southeast-1.amazonaws.com:8080/api/questionset 499
Access to XMLHttpRequest at 'https://d52XXXXXXX2b2295b1abe65ab4e.vfs.cloud9.ap-southeast-1.amazonaws.com:8080/api/questionset' from origin 'https://d52890213a1f40e2b22XXXXXXX4e.vfs.cloud9.ap-southeast-1.amazonaws.com:8081' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Error: Network Error at createError (createError.js:17) at XMLHttpRequest.handleError (xhr.js:87)
my front-end axios code:
export function apiCall(method, url, data) {
console.log(method, url, data)
debugger
return axios({method, url, data
})
.then(res => {
console.log(res);
return res.data;
})
.catch((err) => {
console.log(err)
if (err.response) {
debugger
return Promise.reject(err.response.data);
}
else if (err.request) {
debugger
return Promise.reject(err);
}
else {
debugger
// console.log('Error', err, err.message, 777);
return Promise.reject(err);
}
});
}
calling function
apiCall('get', `${process.env.REACT_APP_BASE_URL}/api/questionset`, undefined)
.then(data =>{
console.log(data);
if(!data.success){
throw Error(data.message);
}
else{
this.setState({
isLoading: false,
questionSets: data.questionSets
})
}
})
.catch(err=>{
debugger
console.log(err);
this.setState({
isLoading: false
})
return this.props.addError(err.message)
});
i also tried some solution stated here. this also gives me same above error
changed code:
axios({method, url, params:{origin:"*"}, data
})
.then(res => {
console.log(res);
return res.data;
})
.catch((err) => {
console.log(err)
}
another solution
return axios[method]({ url, params:{Origin:"*"}, data
})
.then(res => {
console.log(res);
return res.data;
})
.catch((err) => {
console.log(err)
}
it gives me weird error. i do’t why it’s redirect
error: `
Cannot GET /teachers/[object%20Object]`