我正在通过单个Firebase函数运行一个嵌套api,并且由于OAuth&的缘故,我的控制器中的许多端点都需要SSL才能正常工作,因为它们会发回一个仅HTTPS签名的cookie。
因此,我需要能够使用SSL运行本地提供的firebase函数。我已经生成并注册了证书,并且以前将其用于React / Angular和独立的Node + Nest项目。
这是专门用于使其与Firebase函数一起使用。
当前,在我的索引中,我有:
export const API = functions
.region("europe-west2")
.https.onRequest(nestApp);
nestApp在哪里
const server = express();
现在在普通的Node + Nest应用程序中,我要做的就是:
app = await NestFactory.create(AppModule, {
httpsOptions: {
key: keyFile,
cert: certFile,
},
});
使它适应上面的firebase函数不起作用,因为我必须传递Express实例。我遍历了文档和类型,到处都是对象的嵌套位置,其中带有key和cert的http选项位于其中,但是没有运气。
@nestjs/common
的HttpOptions接口确实具有这两个属性,但是express adapter.options()接受请求处理程序,而不是该options对象。
我认为您想做的事是不可能的...您想要它做事的方式。
在本地运行Cloud Function的目的是为了进行代码测试,但即使在本地环境下,Google仍将管理背后的基础架构(SSL,身份验证等)。>
而不是使用功能来管理此功能,为什么不模拟
小型服务器?我可以想到一个简单的NGINX as a Reverse proxy(您可以为此使用任何服务)。这将使您能够以更友好的方式管理SSL证书。这样想:在您的工作流程中,您直接调用NGINX而不是Function。 NGINX将在内部调用Cloud Function,该函数将执行其工作并将响应返回给NGINX,然后从NGINX返回您的工作流,并带有https-signed
以便进行下一步。希望这会有所帮助! :)