Firebase Cloud Functions调用先返回204再返回200,如何避免?
解决Firebase Callable函数返回204后再返回200的问题
这个问题我之前碰到过,根源在于你给Callable类型的云函数额外添加了不必要的cors中间件,导致了额外的预检请求。
问题原因
Firebase的functions.https.onCall(Callable函数)已经内置了跨域请求(CORS)的处理逻辑,不需要手动引入和使用cors中间件。当你手动添加cors后,浏览器会先发送一次OPTIONS预检请求(返回状态码204),随后才会发送实际的POST请求调用函数(返回200),这就是你看到两次响应的原因。
修改后的代码
直接移除所有和cors相关的代码即可:
const functions = require('firebase-functions'); const admin = require('firebase-admin'); exports.addMessage = functions.https.onCall((data, context) => { return { text: "Test" }; });
补充说明
如果是使用functions.https.onRequest创建的普通HTTPS函数,确实需要手动处理CORS,但onCall是专门为客户端SDK调用设计的函数类型,Firebase已经帮我们封装好了包括CORS、身份验证、请求解析在内的一系列逻辑,不需要额外配置。
内容的提问来源于stack exchange,提问作者Can
相关产品推荐
相关产品推荐

