如何通过命令行设置Firebase Functions的security-level为secure-always
解决方案
方案1:部署后通过gcloud命令直接修改安全等级
你用Firebase CLI部署的函数本质是标准GCP Cloud Function,只要你本地gcloud CLI已登录对应GCP项目,直接执行以下命令即可更新安全等级,不需要重新走Firebase部署流程:
gcloud functions update FUNCTION_NAME --security-level=secure-always
该命令仅修改函数运行配置,不会覆盖已部署的函数代码,也不需要调整当前Firebase项目的目录结构。
方案2:部署前通过Firebase配置指定安全等级(推荐)
有两种配置方式可选,部署后自动生效,不需要后续额外操作:
方式A:在函数代码中指定单函数的安全等级
在Node.js函数定义中添加runWith配置项即可:
exports.yourFunctionName = functions.runWith({ httpsTrigger: { securityLevel: "SECURE_ALWAYS" } }).https.onRequest((req, res) => { // 原有函数逻辑 });
方式B:在firebase.json中全局配置所有HTTP函数的安全等级
修改项目根目录的firebase.json文件,在functions节点下添加配置:
{ "functions": { "source": "functions", "httpsTrigger": { "securityLevel": "SECURE_ALWAYS" } } }
配置完成后正常执行firebase deploy --only functions:FUNCTION_NAME部署即可。
备选方案:代码层校验HTTPS请求
如果上述配置方式不适用,可以在函数逻辑开头校验请求头,拒绝HTTP请求:
// 只允许HTTPS请求访问 if (req.get('X-Forwarded-Proto') !== 'https') { return res.status(403).send('仅支持HTTPS访问'); }
内容的提问来源于stack exchange,提问作者Alex Williams
相关产品推荐
相关产品推荐

