Невозможно перенаправить запросы `file: ///` - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь переопределить file:/// URL-адреса, независимо от того, указывают ли они на файлы или каталоги, чтобы мое расширение отображало собственный браузер файлов для представлений каталогов, а также потенциально позволяло редактировать отдельные файлы для файлов.

Iсделал следующую попытку, но слушатель никогда не был запущен ни для файлов, ни для папок:

browser.webRequest.onBeforeRequest.addListener((details) => {
    const {documentUrl, originUrl, type, requestBody, url} = details;
    if ((/^file:/).test(originUrl)) {
        return {
            redirectUrl: browser.extension.getURL('filebrowser/index.html') + '?abc=1'
        };
    }
}, {
    urls: ['file:///*/*']
}, ['blocking']);

Я добавил разрешение "file:///*/*" в манифест ("<all_urls>" также не работало) (и ядобавили «web_accessible_resources» для перенаправления, но это даже не было достигнуто).

Я предполагаю, что это может быть из-за https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/RequestFilter#Type, где говорится, что будут работать только запросы, сделанные с использованием HTTP / HTTPSдля событий, несмотря на шаблоны файлов, поддерживающие другие протоколы.Тем не менее, onHeadersReceived, кажется, получает по крайней мере file:/// файловые запросы (хотя и не запросы каталогов), хотя onBeforeRequest, который необходим для перенаправлений, не дает.

Может кто-нибудь подтвердить, есть ли какие-либообходные пути?

...