I have written some cloud functions and deployed them now i am trying to hit those APIs using my Angular application but i am getting this error
Acces
There are two ways to solve this
OPTIONS
callcors
OPTIONS
call manuallyGet request Method from headers
Check if the method is OPTIONS
Resolve the API with 200
status code.
exports.addUser = functions.https.onRequest((req, res) => {
res.set('Access-Control-Allow-Origin', '*');
res.set('Access-Control-Allow-Methods', 'GET, PUT, POST, OPTIONS');
res.set('Access-Control-Allow-Headers', '*');
if (req.method === 'OPTIONS') {
res.end();
}
else{
if (req.body.username != null && req.body.firstname != null && req.body.lastname != null && req.body.addr1 != null && req.body.addr2 != null || req.body.username != undefined && req.body.firstname != undefined && req.body.lastname != undefined && req.body.addr1 != undefined && req.body.addr2 != undefined ) {
let docId = Math.floor(Math.random() * (99999 - 00000));
let newUser = {
"username": req.body.name,
"firstname": req.body.firstname,
"lastname": req.body.lastname,
"addr1": req.body.addr1,
"addr2": req.body.addr2,
}
usersCollection.add(newUser).then(snapshot => {
res.send(200, {
"message": "User was successfully created"
})
});
} else {
res.send(400, {
"message": "All fields are required"
})
}
}
});
On server side try this:
npm install cors
.
Then
const cors = require('cors')({origin: true});
Maybe this link will help you: Enabling CORS in Cloud Functions for Firebase
Also you can disable CORS rules in browser using plugin, for example in crome: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en