Я пытаюсь перенаправить пользователя в расширение Firefox следующим образом:
browser.webRequest.onBeforeRequest.addListener(
({ url }) => {
const [fullMatch, type, identifier] =
url.match(
/open\.spotify\.com/(track|album|artist|playlist|concert|episode|show|user)/([^\&\#/\?]+)/i
) || [];
return { redirectUrl: `spotify:${type}:${identifier}` };
},
{
urls: ["*://open.spotify.com/track/*", "*://open.spotify.com/album/*",
"*://open.spotify.com/artist/*", "*://open.spotify.com/playlist/*",
"*://open.spotify.com/concert/*", "*://open.spotify.com/episode/*",
"*://open.spotify.com/show/*", "*://open.spotify.com/user/*"],
types: ["xmlhttprequest"],
},
["blocking"]
);
Я добавил разрешения webRequest и webRequestBlocking в манифест. В отладчике я вижу, что достиг оператора return с правильно установленным redirectUrl, но веб-страница не перенаправляется. Я предполагаю, что это должно перенаправлять на основе документации webRequest , однако временное расширение, похоже, не перенаправляет. Любые идеи о том, как заставить расширение перенаправлять? Например, изменение URL-адреса на https://www.google.com тоже не работает, поэтому, похоже, проблема не в URL-адресе.
изменение URL-адреса на google.com тоже не работает, я обновил вопрос, чтобы отразить это
После некоторого тестирования я определил, что проблема связана с массивом типов. xmlhttprequest не фиксирует определенные запросы в Firefox, но делает это в Chrome. Чтобы по-прежнему иметь возможность перенаправлять, типы должны быть следующими:
types: [
"main_frame",
"xmlhttprequest"]
redirectUrl
должен быть правильным URL-адресом, аspotify:${type}:${identifier}
— нет.