Coa*_*ady 4 firebase ionic-framework google-cloud-functions
我正在尝试将 Firebase Cloud Functions 集成到我的 Ionic 3 应用程序中。目标是创建一个云函数,该函数将使用管理 SDK 创建一个用户。
但是,当通过 HTTP 触发此函数时,它只会在将数据传递给它时执行两次,如果我只调用没有数据的函数,它会按预期执行一次。
云函数代码:
const functions = require('firebase-functions');
exports.createUser = functions.https.onRequest((request, response) => {
response.set('Access-Control-Allow-Origin', '*');
response.set('Access-Control-Allow-Headers', 'Content-Type');
console.log(request.body);
response.status(200).send('Hello from Firebase!');
});
Run Code Online (Sandbox Code Playgroud)
HTTP请求:
axios.post(functionURL, {
data: 'some data'
})
.then(res => {
console.log(res.data);
})
.catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
上面的 HTTP 请求按预期工作,我在控制台中只看到一次“Hello from Firebase!”,但是当我查看函数日志时,它显示它被执行了两次。
我对 Firebase Cloud Functions 非常陌生,因此我们将不胜感激任何输入或建议!
此处找到的解决方案:针对 CORS 预检请求的 Firebase 触发函数的 Cloud Functions
当我发送数据时,application/json它触发了 CORS 预检请求,这正是导致函数在传递数据时执行两次的原因。
为了绕过这个,我只是将数据作为这样的application/x-www-form-urlencoded字符串发送:
const dataStr = JSON.stringify(objectToPass);
axios({
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: `data=${dataStr}`
})
Run Code Online (Sandbox Code Playgroud)
然后将主体解析回函数中的对象,如下所示:
const data = JSON.parse(request.body.data);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |