Przeglądaj źródła

fix(desktop-electron): add CORS headers to main window webRequest (#23633)

Brendan Allan 3 dni temu
rodzic
commit
38e2f4cdda
1 zmienionych plików z 27 dodań i 0 usunięć
  1. 27 0
      packages/desktop-electron/src/main/windows.ts

+ 27 - 0
packages/desktop-electron/src/main/windows.ts

@@ -100,6 +100,19 @@ export function createMainWindow() {
     },
   })
 
+  win.webContents.session.webRequest.onBeforeSendHeaders((details, callback) => {
+    const { requestHeaders } = details
+    upsertKeyValue(requestHeaders, "Access-Control-Allow-Origin", ["*"])
+    callback({ requestHeaders })
+  })
+
+  win.webContents.session.webRequest.onHeadersReceived((details, callback) => {
+    const { responseHeaders = {} } = details
+    upsertKeyValue(responseHeaders, "Access-Control-Allow-Origin", ["*"])
+    upsertKeyValue(responseHeaders, "Access-Control-Allow-Headers", ["*"])
+    callback({ responseHeaders })
+  })
+
   state.manage(win)
   loadWindow(win, "index.html")
   wireZoom(win)
@@ -177,3 +190,17 @@ function wireZoom(win: BrowserWindow) {
     win.webContents.setZoomFactor(1)
   })
 }
+
+function upsertKeyValue(obj: Record<string, any>, keyToChange: string, value: any) {
+  const keyToChangeLower = keyToChange.toLowerCase()
+  for (const key of Object.keys(obj)) {
+    if (key.toLowerCase() === keyToChangeLower) {
+      // Reassign old key
+      obj[key] = value
+      // Done
+      return
+    }
+  }
+  // Insert at end instead
+  obj[keyToChange] = value
+}