Как мы можем использовать Electron.protocol.interceptFileProtocol только с определенными путями, оставляя другие запросы без изменений? - PullRequest
2 голосов
/ 02 мая 2019

Я бы хотел перехватить определенные HTTP-запросы и заменить их файлами. Поэтому я подумал, что могу использовать electron.protocol.interceptFileProtocol примерно так:

protocol.interceptFileProtocol('http', (request, callback) => {
  // intercept only requests to "http://example.com"
  if (request.url.startsWith("http://example.com")) {
    callback("/path/to/file")
  }

  // otherwise, let the HTTP request behave like normal.
  // But how?
})

Как разрешить другим http запросам, отличным от http://example.com, продолжать работать в обычном режиме?

1 Ответ

1 голос
/ 25 июля 2019

Не уверен, есть ли способ сделать это точно? но я сделал нечто подобное, что использовать session.defaultSession.webRequest.onBeforeRequest Смотри: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest

что-то вроде

session.defaultSession.webRequest.onBeforeRequest({urls: ['http://example.com']}, function(details, callback) {
  callback({
    redirectURL: 'file://' + this.getUrl(details.url)
  });
});

Если вам нужно больше, чем перенаправление, вы можете перенаправить на свой собственный протокол (например, URL-адрес типа mycustomprotocol://...). Вы можете реализовать свой собственный обработчик протокола с помощью protocol.registerStringProtocol и т. Д.

Я использовал оба onBeforeRequest и registerStringProtocol по отдельности в электронном виде до сих пор без проблем, но никогда вместе не было - должно работать вместе, хотя я и гаусс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...