|
1 | | -import { app, BrowserWindow, ipcMain, dialog, shell } from 'electron'; |
| 1 | +import { app, BrowserWindow, ipcMain, dialog, shell, session } from 'electron'; |
2 | 2 | import { join } from 'path'; |
3 | 3 | import { readFile, writeFile } from 'fs/promises'; |
4 | 4 |
|
@@ -35,7 +35,26 @@ function createWindow() { |
35 | 35 | }); |
36 | 36 | } |
37 | 37 |
|
38 | | -app.whenReady().then(createWindow); |
| 38 | +app.whenReady().then(() => { |
| 39 | + // Inject Referer + User-Agent for map tile servers that require them (e.g. OSM). |
| 40 | + // Without a Referer, OSM and several other volunteer tile CDNs return HTTP 403. |
| 41 | + session.defaultSession.webRequest.onBeforeSendHeaders( |
| 42 | + { urls: ['https://*'] }, |
| 43 | + (details, callback) => { |
| 44 | + const headers = { ...details.requestHeaders }; |
| 45 | + // Only patch tile-like image requests that lack a Referer |
| 46 | + if (!headers['Referer'] && !headers['referer']) { |
| 47 | + headers['Referer'] = 'https://opengis.app/'; |
| 48 | + } |
| 49 | + if (!headers['User-Agent'] || headers['User-Agent'].startsWith('Electron')) { |
| 50 | + headers['User-Agent'] = 'OpenGIS/0.1.0 (https://opengis.app)'; |
| 51 | + } |
| 52 | + callback({ requestHeaders: headers }); |
| 53 | + }, |
| 54 | + ); |
| 55 | + |
| 56 | + createWindow(); |
| 57 | +}); |
39 | 58 |
|
40 | 59 | app.on('window-all-closed', () => { |
41 | 60 | if (process.platform !== 'darwin') app.quit(); |
|
0 commit comments