externally_connectable

La propiedad del manifiesto externally_connectable declara qué extensiones, apps y páginas web se pueden conectarte a tu extensión mediante runtime.connect y runtime.sendMessage.

Para ver un instructivo sobre el envío de mensajes, consulta Mensajes entre extensiones y apps y Cómo enviar mensajes de páginas web.

Conéctate sin external_connectable

Si no se declara externally_connectable en el manifiesto de tu extensión, todas las extensiones y apps se puede conectar, pero ninguna página web puede hacerlo. Por ello, cuando actualices tu manifiesto para usar externally_connectable, si no se especifica "ids": ["*"], se aplicarán otras extensiones y apps ya no podrán conectarse a tu extensión. Esta puede ser una consecuencia no deseada, así que manténgalo en en la mente.

Archivo manifest.json de ejemplo

{
  "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
  },
  ...
}

Referencia

La clave de manifiesto external_connectable puede tener las siguientes propiedades:

  • ids (array de cadenas): opcional

    Los ID de las extensiones o aplicaciones que pueden conectarse. Si se deja vacío o no se especifica, no extensiones o apps pueden conectarse.

    El comodín "*" permitirá que todas las extensiones y aplicaciones se conecten.

  • matches (array de cadenas): opcional

    Son los patrones de URL de las páginas web que pueden conectarse. Esto no afecta el contenido secuencias de comandos. Si se deja vacío o no se especifica, ninguna página web puede conectarse.

    Los patrones no pueden incluir dominios comodín ni subdominios de dominios de nivel superior(efectivos). *://google.com/* y http://*.chromium.org/* son válidos, mientras que <all_urls>, http://*/*, *://*.com/* y hasta http://*.appspot.com/* no lo son.

  • accepts_tls_channel_id (booleano): opcional

    Si es true, se configurarán los mensajes enviados a través de runtime.connect o runtime.sendMessage runtime.MessageSender.tlsChannelId si esos métodos lo solicitan. Si es false, runtime.MessageSender.tlsChannelId nunca se establecerá en ninguna circunstancia.