Reputation: 180
In my electron application, I need to send a request which includes a modified Referer
header. What is the best way to do this?
I attempted to use the builtin browser fetch
api, but it just fails to set the Referer header.
const json = await fetch(api_url, {
referrer: referer_url,
headers: {
"Referer": referer_url,
},
mode: "no-cors"
}).then(r => r.json());
Electron v3.0.6
Upvotes: 3
Views: 2391
Reputation: 1138
You need to handle all fetch requests in Electron. For example:
File background.js
(for electron):
const filter = {
urls: ['https://*./*', 'http://*./*'],
};
session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => {
if (details.url.startsWith(process.env.VUE_APP_API_SEFVER)) {
details.requestHeaders['Origin'] = 'my-tools';
} else {
const url = new URL(details.url);
details.requestHeaders['Origin'] = url.origin;
if (!details.url.includes('//localhost')
&& details.requestHeaders['Referer']
&& details.requestHeaders['Referer'].includes('//localhost')) {
details.requestHeaders['Referer'] = details.url;
}
}
callback({ cancel: false, requestHeaders: details.requestHeaders });
});
Upvotes: 1