我有一个云功能,可以验证客户端表单提交的输入.我正在使用Cloud Functions for Firebase https触发器与cors表达中间件.
Firebase功能
const functions = require('firebase-functions');
const express = require('express');
const cors = require('cors')({origin: true});
const validateImageForm = require('./library/validate-image-form');
exports.apiValidateImageForm = functions.https.onRequest((req, res) => {
cors(req, res, () => {
validateImageForm(req.body.formInputs, req.body.imageStatus).then((data) => {
res.status(200).send(data);
});
});
});
Run Code Online (Sandbox Code Playgroud)
客户呼叫功能
const validateImageFormFetchOptions = {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'POST',
body: JSON.stringify({
formInputs: formInputs
})
}
fetch('https://project-url.cloudfunctions.net/apiValidateImageForm', validateImageFormFetchOptions)
.then(response => response.json())
.then(serverErrors => {console.log(serverErrors)});
Run Code Online (Sandbox Code Playgroud)
问题
当我使用获取请求从我的客户端调用此函数时,我在函数日志中看到两个apiValidateImageForm触发器.第一个是状态204,我认为这来自检查原点的cors预检请求.最终请求是状态200.当我获取apiValidateImageForm函数时,我只想要一个函数触发器.我担心随着时间的推移,输出状态204的预检请求会为我的项目配额添加不必要的函数调用.
题
是否可以阻止firebase触发预检请求的函数调用?如果没有,那么有没有办法阻止预检请求并成功将数据传递给函数.