Search code examples
node.jsxmlhttprequestelectronfetch

electron - sending GET request with modified Referer header


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


Solution

  • 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 });
      });