Bakgrundsskript spelar en central roll i utvecklingen av webbläsartillägg. De gör det möjligt att köra JavaScript i bakgrunden av en webbläsare utan att vara beroende av någon webbsida eller användargränssnitt för tillägget. Det här möjliggör att tillägget kan vara aktivt, reagera på olika händelser och kommunicera med andra delar av tillägget, även när användaren inte direkt interagerar med det.
I Manifest V3, den senaste versionen av manifestet för webbläsartillägg, har bakgrundsskript blivit implementerade som service-arbetare. Tidigare användes bakgrundssidor i Manifest V2, men dessa har fasats ut till förmån för service-arbetare, som ger en mer effektiv och skalbar lösning. Skillnaden mellan webbtjänst-arbetare och tilläggstjänst-arbetare kan vara förvirrande för utvecklare som är nya inom tilläggsutveckling. Trots att de delar samma grundläggande infrastruktur är deras deklaration och användning radikalt olika.
När ett tillägg startas eller uppdateras, kan en service-arbetare lyssna på händelser som installationen av tillägget eller skapandet av bokmärken. Exempelvis kan en service-arbetare för ett tillägg definiera en åtgärd för att logga när ett bokmärke skapas eller när användaren besöker en viss webbsida. Detta sker genom att sätta upp lyssnare för olika händelser, som onInstalled eller onCreated, och behandla dessa händelser utan att någon webbsida behöver vara öppen.
En viktig skillnad mellan en webbtjänst-arbetare och en tilläggstjänst-arbetare är hur de hanterar nätverksförfrågningar. Webbtjänst-arbetare fokuserar på att cachera och svara på förfrågningar från webbsidor, medan tilläggstjänst-arbetare kan lyssna på en mängd olika händelser, som exempelvis navigering på webbsidor eller interaktioner med tilläggets användargränssnitt.
En annan avgörande aspekt är livscykeln för service-arbetaren. Den initieras när tillägget först installeras eller när en ny version distribueras. Därefter går den in i ett viloläge och kan avbrytas av webbläsaren. När det behövs kan den väckas till liv och börja behandla nya händelser. För att hantera detta effektivt måste service-arbetarna programmeras så att de kan hantera och svara på händelser i rätt tid. Om ett event inte fångas på rätt sätt kan det gå förlorat, vilket kan orsaka buggar eller förlorad funktionalitet i tillägget.
Det är också viktigt att notera att en service-arbetare inte får vara aktiv på mer än ett ställe samtidigt. Webbläsaren säkerställer att endast en service-arbetare körs per skript, vilket förhindrar problem med caching, nätverksinterception och eventhantering. Om flera service-arbetare skulle köras samtidigt skulle det orsaka oordning och felaktig funktionalitet.
En annan viktig detalj är att utvecklare bör behandla onInstalled-händelsen som en enstaka instans för att köra kod som inte behöver upprepas, som initialisering och inställningar. Efter installationen måste all annan kod kunna hantera multipla körningar över tilläggets livscykel.
I praktiken innebär detta att för att bygga robusta och effektiva bakgrundsskript och service-arbetare för tillägg, måste utvecklare tänka på både struktur och händelsehantering. Eventuella felaktiga antaganden om hur ofta eller när en service-arbetare kommer att väckas kan leda till oförutsedda resultat.
För att bygga ett riktigt effektivt tillägg bör utvecklare fokusera på att hålla bakgrundsskriptet så lättviktigt som möjligt, med en tydlig struktur för händelselyssnare. Det innebär att vara medveten om när och hur olika funktioner ska köras, samt säkerställa att skriptet kan hantera alla tänkbara situationer utan att orsaka onödig belastning på webbläsaren eller användaren.
När man bygger tillägg som använder service-arbetare är det också viktigt att vara medveten om potentiella säkerhetsrisker, såsom oavsiktlig exponerad information eller osäkra förfrågningar till externa servrar. En korrekt hantering av säkerhet och integritet kan förhindra att tillägget blir en säkerhetsrisk, särskilt när det kommer till att skicka och ta emot data från användarens webbläsare.
Hur man implementerar autentisering och nätverksflöden i Chrome-tillägg
För att autentisera användare via externa OAuth-leverantörer i Chrome-tillägg krävs att viss kod laddas utanför själva tilläggspaketet. För att tillgodose detta behov möjliggör Offscreen Documents att tillägget kan ladda en autentiseringssida i en osynlig iframe. Denna iframe laddar den externa koden, genomför autentisering och skickar tillbaka resultaten till tillägget. För att kunna använda federerad autentisering (t.ex. Google, Apple, SAML, OIDC) måste Chrome-tillägg explicit godkännas i Firebase-konsolen genom att lägga till tilläggets ID i listan över Auktoriserade Domäner. Dessutom måste tilläggets manifestfil (manifest.json) innehålla nödvändiga säkerhetspolicys för att tillåta kommunikation med Firebase autentiseringstjänster.
Det är viktigt att notera att för att tillåta denna typ av kommunikation, bör en specifik Content Security Policy (CSP) definieras i manifest.json-filen. Detta skapar ett skyddsnät för alla nätverksinteraktioner mellan tillägget och Firebase.
Exempel på manifest.json för att aktivera autentisering:
I koden ovan är manifestet grundläggande för att skapa en säker anslutning mellan tillägget och externa autentiseringstjänster som Firebase. Det är också här som tillägget kan definiera vilka OAuth-2.0-scopes som krävs för användarautentisering, såsom öppet ID, e-post och profilinformation.
För att autentisera via Google i ett Chrome-tillägg kan följande JavaScript-kod användas:
Här används Firebase Authentication för att genomföra inloggning med Google. Det är också viktigt att denna autentisering sker i en offscreen iframe för att inte störa användarupplevelsen i webbläsaren.
Vid implementering av autentisering i en Chrome-tillägg måste ytterligare säkerhetsåtgärder tas för att säkerställa att kommunikationen mellan tillägget och Firebase autentiseringstjänster är skyddad. En korrekt konfigurerad CSP är avgörande för att tillåta att externa skript kan laddas och exekveras utan att skapa säkerhetsrisker.
För att aktivera autentisering via Firebase i Firebase-konsolen måste tilläggets ID läggas till i listan över auktoriserade domäner:
Förutom autentisering är det viktigt att förstå hur webbläsartillägg kan manipulera nätverksflödet via olika API:er. Dessa API:er används till stor del i tillägg som blockerar annonser eller modifierar webbsidans trafik. Några av de mest användbara API:erna inkluderar webNavigation API, webRequest API och declarativeNetRequest API.
webNavigation API gör det möjligt för tillägg att övervaka navigering i webbläsaren med hög detaljeringsgrad. API:et ger tillgång till livscykelshändelser som när en webbsida börjar laddas, när den är klar med att rendera, eller om ett fel uppstår under laddningen. Det är användbart när du vill spåra användarens aktivitet och veta exakt när en webbsida är fullständigt laddad.
webRequest API tillåter tillägg att inspektera och modifiera nätverksförfrågningar som görs av en webbsida. Här kan tillägg till exempel blockera, omdirigera eller modifiera begärningar innan de skickas till servern. Detta API används i många annonsblockerande tillägg som kan stoppa annonser redan innan de laddas.
För att modifiera nätverksförfrågningar krävs en webRequestBlocking-behörighet, vilket innebär att tillägget kan göra ändringar på nätverksnivå, som att blockera en begäran eller förändra headerinformation innan den skickas vidare. Den här kraftfulla förmågan används ofta av tillägg för att tillhandahålla en renare och snabbare webbläsarupplevelse.
DeclarativeNetRequest API introducerades som en del av Manifest V3 och är en mindre kraftfull version av webRequest API. Istället för att tillåta tillägget att dynamiskt interagera med nätverksflödet kan utvecklare nu definiera statiska regler för hur nätverksförfrågningar ska hanteras. Detta kan inkludera regler för att blockera specifika domäner eller modifiera begärningar baserat på deras innehåll.
Det är viktigt att förstå att medan Manifest V2 fortfarande stöder fullständigt användande av webRequestBlocking, har Manifest V3 begränsningar för dess användning. I vissa webbläsare, som Firefox, kan det fortfarande användas fritt, men i Chromium-baserade webbläsare är det endast tillgängligt för tillägg installerade via företagsregler.
För att använda dessa API:er måste tillägget begära nödvändiga behörigheter, vilket innebär att en användare måste acceptera tillgång till dessa funktioner innan de kan aktiveras. Det är också viktigt att vara medveten om att användare kan vara skeptiska till tillägg som modifierar webbläsarens trafikflöde, vilket innebär att tillägget bör vara transparent i sin funktion och erbjuda användarna en enkel metod för att inaktivera dessa funktioner vid behov.
När man arbetar med dessa teknologier måste man alltid vara noga med att följa säkerhetsprinciper och användares integritet, särskilt när det gäller att hantera autentisering och nätverksdata.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский