electron 允许localhost API请求而不删除内容安全策略

polhcujo  于 2023-02-17  发布在  Electron
关注(0)|答案(1)|浏览(171)

我最近发现了electron,并用它为我的ionic-angular webapp创建了一个windows app,我想调用一个localhost API。
到目前为止,我一直在删除内容安全策略,如下所示:

//before
export function setupContentSecurityPolicy(customScheme: string): void {
  session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
    callback({
      responseHeaders: {
        ...details.responseHeaders,
        'Content-Security-Policy': [
          electronIsDev
            ? `default-src ${customScheme}://* 'unsafe-inline' devtools://* 'unsafe-eval' data:`
            : `default-src ${customScheme}://* 'unsafe-inline' data:`,
        ],
      },
    });
  });
}

//after
// Set a CSP up for our application based on the custom scheme
export function setupContentSecurityPolicy(customScheme: string): void {
  session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
    callback({
      responseHeaders: {
        ...details.responseHeaders,
      },
    });
  });
}

这对于测试来说工作得很好,但显然这只是一个临时的解决方案。
我通过编辑内容策略实现的唯一一件事是阻止我的应用程序获取离子CSS样式表。
我该如何在策略中实现保存/接受的源代码?另外,我是否必须在电子版中编辑策略,或者在编译之前,是否有办法在我的Ionic-Angular应用程序中编辑策略?

lpwwtiir

lpwwtiir1#

我觉得这对你有用:

export function setupContentSecurityPolicy(customScheme: string): void {
  const domainsWhiteList:string[] = [
    "http://localhost"
    , "https://www.gstatic.com"
    , "https://www.googletagmanager.com"
    , "https://firebase.googleapis.com" //firebase
    , "https://firebaseinstallations.googleapis.com" //firebase
  ];

  session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
    callback({
      responseHeaders: {
        ...details.responseHeaders,
        'Content-Security-Policy': [
          electronIsDev
          ? `default-src ${customScheme}://* 'unsafe-inline' file://* devtools://* 'unsafe-eval' data: ${domainsWhiteList.join(' ')}`
          : `default-src ${customScheme}://* 'unsafe-inline' file://*                            data: ${domainsWhiteList.join(' ')}`,
        ],
      },
    });
  });
}

相关问题