Как я могу перехватить запросы к файлу и изменить их на протокол http? - PullRequest
0 голосов
/ 17 мая 2018

Можно ли в Electron перехватывать запросы к файлу: /// и перенаправлять их на http?

Я проверил страницу протокола Electron , но не очевидно, поддерживается это или нет.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Есть еще один способ, которым я смог решить эту проблему, и, что интересно, слово «перехват» в вопросе имеет к этому непосредственное отношение:)

Существует функция interceptHttpProtocol () для объекта протокола, который вы можете использовать.

Пример кода:

app.on("ready", () => {
    protocol.interceptHttpProtocol("http", function(request, callback) {
    var parsedUri = url.parse(request.url);

    var filePath = path.join(__dirname, parsedUri.pathname);
    request.url = "file://" + filePath; 

    callback(request);
  });

  var mainWindow = new BrowserWindow();

  mainWindow.loadURL("http://localhost/index.html");
});

Надеюсь, что поможет

0 голосов
/ 17 мая 2018

Вы можете использовать protocol.registerHttpProtocol со схемой file для перехвата file: запросов и вместо этого сделать HTTP-запрос.

Пример ( не проверено ):

const {app, protocol} = require('electron')
const path = require('path')

app.on('ready', () => {
  protocol.registerHttpProtocol('file', (request, callback) => {
    const url = request.url.substr(8)
    callback({url: 'http://example.com/' + url)})
  }, (error) => {
    if (error) console.error('Failed to register protocol')
  })
})

Примечание. В этом образце может потребоваться уточнение, поскольку путь к файлу может содержать букву диска, которая будет недействительной для HTTP-запроса.

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