Firebase可调用函数仿真器配置不起作用

zzlelutf  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(120)

我正在向一个现有的Angular/Firebase项目添加可调用函数。我已经使用了我认为是当前配置标准的配置,但该项目仍然在调用生产端点,导致了一个cors异常。
组态设定:

@NgModule({
  declarations: [
    AppComponent,
    routingComponents,
    ...
  ],
  imports: [
    ...
    provideFirebaseApp(() => initializeApp(environment.firebase)),
    provideAuth(() => {
      const auth = getAuth();
      if (environment.useEmulators) {
        connectAuthEmulator(auth, 'http://localhost:5005', { disableWarnings: true });
      }
      return auth;
    }),

-- FUNCTIONS CONFIG CODE --

    provideFunctions(() => {
      const functions = getFunctions();
      if (environment.useEmulators) {
        connectFunctionsEmulator(functions, 'localhost', 5001);
      }
      return functions;
    }),

-- FUNCTIONS CONFIG CODE --

    provideFirestore(() => {
      const firestore = getFirestore();
      if (environment.useEmulators) {
        connectFirestoreEmulator(firestore, 'localhost', 5006);
      }
      return firestore;
    }),
    //provideStorage(() => getStorage()),
    provideAnalytics(() => getAnalytics()),
    ...
  ],
  exports: [],
  providers: [...],
  bootstrap: [AppComponent]
})

仿真器正在记录:

▷函数[用户中心1-添加消息2]:http函数已初始化(http://127.0.0.1:5001/{project-name}/us-central1/addMessage2)。

对端点的Angular 调用失败,原因是:

CORS策略已阻止从源“http://localhost:4200”在“https://us-central 1-{项目名称}.cloudfunctions.net/addMessage2”处进行提取的访问:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以在禁用CORS的情况下提取资源。

oxiaedzo

oxiaedzo1#

您可以按照本Article中提供的说明来模拟Firebase云函数
在该文章中,还提到了如何设置CORS标题,如下所示:

export const helloWorld = functions.https.onRequest((request, response) => {
  response.set('Access-Control-Allow-Origin', '*');
  response.send({ message: 'Hello from Firebase emulator!' });
});

相关问题