ahs*_*sar 15 node.js cors angular google-cloud-firestore
我已经编写了一些云函数并部署了它们,现在我正在尝试使用我的 Angular 应用程序访问这些 API,但出现此错误
从源“ http://localhost:4200 ”访问 XMLHttpRequest at 'xxxxxxxxxxxxxxxxxxxxxxxx'已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:不存在“Access-Control-Allow-Origin”标头在请求的资源上。
我知道我必须在我的云功能中启用 cors,但我以前从未这样做过,所以如果你们能告诉我如何做到这一点会很棒吗?我确实检查了这个线程,但我有点困惑我需要在哪里初始化 cors,我是否也需要安装它的依赖项,我需要在我的云功能中在哪里启用它?这是我的云功能
const functions = require('firebase-functions');
const admin = require("firebase-admin");
const bodyParser = require("body-parser");
admin.initializeApp();
const db = admin.firestore();
const usersCollection = db.collection("users");
exports.addUser = functions.https.onRequest((req, res) => {
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"
})
}
});
Run Code Online (Sandbox Code Playgroud)
Cha*_*nya 18
有两种方法可以解决这个问题
OPTIONS调用OPTIONS手动处理呼叫获取请求方法来自 headers
检查方法是否 OPTIONS
使用200状态码解析 API 。
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"
})
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15296 次 |
| 最近记录: |