首页 > 解决方案 > 电子 - 发送带有修改的Referer标头的GET请求

问题描述

在我的电子应用程序中,我需要发送一个包含修改后的Referer标头的请求。做这个的最好方式是什么?

我尝试使用内置浏览器fetchapi,但它只是无法设置 Referer 标头。

const json = await fetch(api_url, {
  referrer: referer_url,
  headers: {
    "Referer": referer_url,
  },
  mode: "no-cors"
}).then(r => r.json());

电子 v3.0.6

标签: node.jsxmlhttprequestelectronfetch

解决方案


您需要处理 Electron 中的所有获取请求。例如:

文件background.js(用于电子):

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

推荐阅读