externally_connectable

A propriedade de manifesto externally_connectable declara quais extensões, apps e páginas da Web podem conecte-se à extensão via runtime.connect e runtime.sendMessage.

Para acessar um tutorial sobre a transmissão de mensagens, consulte Mensagens entre extensões e apps e Envio de mensagens em páginas da Web.

Como se conectar sem external_connectable

Se externally_connectable não for declarado no manifesto da sua extensão, todas as extensões e apps podem se conectar, mas nenhuma página da Web pode conectar. Como consequência, ao atualizar o manifesto para usar externally_connectable, se "ids": ["*"] não for especificado, outras extensões e apps serão não será mais possível se conectar à extensão. Esta pode ser uma consequência não intencional, portanto, mantenha em mente.

Exemplo de manifest.json

{
  "name": "My externally connectable extension",
  "externally_connectable": {
    // Extension and app IDs. If this field is not specified, no
    // extensions or apps can connect.
    "ids": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      ...
      // Alternatively, to match all extensions and apps, specify only
      // "*".
      "*"
    ],
    // Match patterns for web pages. Does not affect content scripts.
    // If this field is not specified, no webpages can connect.
    "matches": [
      "https://*.google.com/*",
      "*://*.chromium.org/*",
      ...
    ],
    // Indicates that the extension would like to make use of the TLS
    // channel ID of the web page connecting to it. The web page must
    // also opt to send the TLS channel ID to the extension via setting
    // includeTlsChannelId to true in runtime.connect's connectInfo
    // or runtime.sendMessage's options.
    "accepts_tls_channel_id": false
  },
  ...
}

Referência

A chave de manifesto external_connectable pode ter as seguintes propriedades:

  • ids (matriz de string): opcional

    Os IDs das extensões ou dos apps que têm permissão para se conectar. Se deixado em branco ou não especificado, não extensões ou apps podem se conectar.

    O caractere curinga "*" permite que todas as extensões e apps se conectem.

  • matches (matriz de string): opcional

    Os padrões de URL das páginas da Web que têm permissão para se conectar. Isso não afeta o conteúdo scripts. Se deixado em branco ou não especificado, nenhuma página da Web poderá se conectar.

    Os padrões não podem incluir domínios com caracteres curinga nem subdomínios de domínios de nível superior(efetivos). *://google.com/* e http://*.chromium.org/* são válidos, enquanto <all_urls>, http://*/*, *://*.com/* e até http://*.appspot.com/* não são.

  • accepts_tls_channel_id (booleano) — opcional

    Se true, as mensagens enviadas por runtime.connect ou runtime.sendMessage são definidas runtime.MessageSender.tlsChannelId se esses métodos solicitarem que ele seja. Se for false, O runtime.MessageSender.tlsChannelId nunca será definido em nenhuma circunstância.