externally_connectable

La propriété du fichier manifeste externally_connectable déclare les extensions, les applications et les pages Web qui peuvent se connecter à votre application via runtime.connect et runtime.sendMessage.

Pour accéder à un tutoriel sur la transmission de messages, consultez les sections Message interextension et messagerie d'application et Envoyer des messages à partir de pages Web.

Se connecter sans external_connectable

Si externally_connectable n'est pas déclaré dans le fichier manifeste de votre application, toutes les extensions et applications peuvent se connecter, mais aucune page Web ne peut se connecter. Par conséquent, lorsque vous mettez à jour votre fichier manifeste pour utiliser externally_connectable, si "ids": ["*"] n'est pas spécifié, les autres extensions et applications ne pourront plus se connecter à votre application. Cela peut être une conséquence inattendue, veuillez donc en tenir compte.

Exemple de fichier manifest.json

{
  "name": "My externally connectable app",
  "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
  },
  ...
}

Reference

La clé du fichier manifeste external_connectable peut avoir les propriétés suivantes:

  • ids (tableau de chaînes) : facultatif

    ID des extensions ou des applications autorisées à se connecter. Si ce champ n'est pas spécifié, aucune extension ni application ne peut se connecter.

    Le caractère générique "*" permet à toutes les extensions et applications de se connecter.

  • matches (tableau de chaînes) : facultatif

    Formats d'URL des pages Web autorisées à se connecter. Cela n'affecte pas les scripts de contenu. Si ce champ n'est pas renseigné ou qu'il n'est pas renseigné, aucune page Web ne peut se connecter.

    Les formats ne peuvent pas inclure de domaines génériques ni de sous-domaines de domaines de premier niveau(effectifs). *://google.com/* et https://*.chromium.org/* sont valides, contrairement à <all_urls>, https://*/*, *://*.com/* et même https://*.appspot.com/*.

  • accepts_tls_channel_id (booléen) : facultatif

    Si la valeur est true, les messages envoyés via runtime.connect ou runtime.sendMessage seront définis sur runtime.MessageSender.tlsChannelId si ces méthodes le demandent. Si la valeur est false, runtime.MessageSender.tlsChannelId ne sera jamais défini.