Skip to content

Commit b46bcad

Browse files
author
GeoCodeCrafter
committed
fix: inject Referer header for tile requests in Electron to unblock OSM 403s
1 parent bed5a16 commit b46bcad

1 file changed

Lines changed: 21 additions & 2 deletions

File tree

‎electron/main.ts‎

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { app, BrowserWindow, ipcMain, dialog, shell } from 'electron';
1+
import { app, BrowserWindow, ipcMain, dialog, shell, session } from 'electron';
22
import { join } from 'path';
33
import { readFile, writeFile } from 'fs/promises';
44

@@ -35,7 +35,26 @@ function createWindow() {
3535
});
3636
}
3737

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+
});
3958

4059
app.on('window-all-closed', () => {
4160
if (process.platform !== 'darwin') app.quit();

0 commit comments

Comments
 (0)