Manifesto - Recursos acessíveis na Web

Recursos acessíveis pela Web são arquivos dentro de uma extensão que podem ser acessados por páginas da Web ou outras extensões. As extensões geralmente usam esse recurso para expor imagens ou outros recursos que precisam ser carregado em páginas da Web, mas qualquer recurso incluído em um pacote de extensão pode ser acessado na Web.

Por padrão, nenhum recurso pode ser acessado pela Web, porque isso permite que um site malicioso faça a impressão digital de extensões instaladas pelo usuário. ou explorar vulnerabilidades (por exemplo, bugs XSS) nas extensões instaladas. Somente páginas ou scripts carregados da origem de uma extensão pode acessar os recursos dela.

Declaração do manifesto

Use a propriedade de manifesto web_accessible_resources para declarar quais recursos são expostos e para quais origens. Essa propriedade é uma matriz de objetos que declara regras de acesso a recursos. Cada objeto lista vários recursos de extensão e precisa fornecer um valor para pelo menos um dos matches ou Chaves extension_ids para indicar as origens que podem acessar esses recursos.

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
    }
  ],
  ...
}

Cada objeto na matriz contém estes elementos:

"resources"
Uma matriz de strings, cada uma contendo um caminho relativo para determinado recurso do diretório raiz da extensão. Os recursos podem conter asteriscos (*) para correspondências de caracteres curinga. Por exemplo, "/images/*" expõe tudo no diretório images/ da extensão de maneira recursiva, enquanto "*.png" expõe todos os arquivos PNG.
"matches"
Uma matriz de strings, cada uma contendo um padrão de correspondência que especifica quais sites podem acessar esse conjunto de recursos. Somente a origem é usada para corresponder aos URLs. As origens incluem a correspondência de subdomínios. O Google Chrome emite um "padrão de correspondência inválido" se o padrão tiver um caminho diferente de '/*'.
"extension_ids"
Uma matriz de strings, cada uma contendo o ID de uma extensão com acesso aos recursos.

Cada elemento precisa incluir um elemento "resources" e um elemento "matches" ou "extension_ids". Isso estabelece um mapeamento que expõe os recursos especificados para páginas da Web que correspondem ao padrão ou para extensões com IDs correspondentes.

Os recursos estão disponíveis em uma página da Web usando o URL chrome-extension://[PACKAGE ID]/[PATH], que pode ser gerado com o runtime.getURL(). . Os recursos são disponibilizados com cabeçalhos CORS apropriados usando fetch().

A navegação de uma origem da Web para um recurso de extensão é bloqueada, a menos que o recurso seja listados como acessíveis pela web. Observe estes casos extremos:

  • Quando uma extensão usa a API webRequest para redirecionar um usuário solicitação de recurso para um recurso que não pode ser acessado pela Web, essa solicitação também será bloqueada.
  • Os redirecionamentos de recursos públicos serão bloqueados mesmo se o recurso não acessível na Web for de propriedade do .
  • A navegação fica bloqueada no modo de navegação anônima, a menos que o valor do campo "incognito" esteja definido como "split".

Os scripts de conteúdo não precisam ser autorizados.

Exemplo

O exemplo de recursos acessíveis da Web demonstra o uso desse elemento em uma extensão que funciona.