Aller au contenu principal

net

Émettre des requêtes HTTP/HTTPS à l'aide de la bibliothèque réseau native de Chromium

Processus : Main, Utility

Le module net est une API côté client pour émettre des requêtes HTTP(S). Il est semblable aux modules HTTP et HTTPS de Node.js, mais utilise la bibliothèque réseau native de Chromium au lieu de l'implémentation de Node.js, offrant ainsi un meilleur support pour les proxy web. Il prend également en charge la vérification de l'état du réseau.

Voici une liste non exhaustive de pourquoi vous devriez utiliser le module net plutôt que les modules natifs de Node.js :

  • Gestion automatique de la configuration de proxy système, support du protocole wpad et les fichiers de configuration de proxy pac.
  • Tunnel automatique des requêtes HTTPS.
  • Prise en charge de l'authentification proxy en utilisant basic, digest, NTLM, Kerberos ou en négociant des schémas d'authentification.
  • Prise en charge des proxy de surveillance du trafic: Proxy de type Fiddler utilisés pour le contrôle et la surveillance des accès.

Les composants de l'API (y compris les classes, méthodes, propriétés et noms d'événements) sont similaires à ceux utilisés dans Node.js.

Exemple d'utilisation :

const { app } = require('electron')
app.whenReady().then(() => {
const { net } = require('electron')
const request = net.request('https://github.com')
request.on('response', (response) => {
console.log(`STATUS: ${response.statusCode}`)
console.log(`HEADERS: ${JSON.stringify(response.headers)}`)
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`)
})
response.on('end', () => {
console.log('No more data in response.')
})
})
request.end()
})

L'API net ne peut être utilisée qu'après que l'application ait émit un événement ready. Toute tentative d'utilisation du module avant l'événement ready déclenchera une erreur.

Méthodes

Le module net dispose des méthodes suivantes :

net.request(options)

Retourne ClientRequest

Créer une instance de ClientRequest avec les options founies qui sont directement transmis au constructor de ClientRequest. La méthode net.request doit être utilisée pour émettre des requêtes HTTP sécurisés et non sécurisés selon le schéma de protocole spécifié dans l'objet options.

net.fetch(input[, init])

Returns Promise<GlobalResponse> - see Response.

Sends a request, similarly to how fetch() works in the renderer, using Chrome's network stack. This differs from Node's fetch(), which uses Node.js's HTTP stack.

Exemple :

async function example () {
const response = await net.fetch('https://my.app')
if (response.ok) {
const body = await response.json()
// ... utilisation du résultat.
}
}

Cette méthode émettra des requêtes à partir de la session par défaut. Pour envoyer une requête fetch depuis une autre session, utilisez ses.fetch().

Reportez-vous à la documentation MDN sur fetch() pour plus de détails .

Limitations:

  • net.fetch() ne prend pas en charge les schémas data: ou blob:.
  • La valeur de l'option integrity est ignorée.
  • Les valeurs .type et .url de l'objet Response retourné sont incorrectes.

By default, requests made with net.fetch can be made to custom protocols as well as file:, and will trigger webRequest handlers if present. When the non-standard bypassCustomProtocolHandlers option is set in RequestInit, custom protocol handlers will not be called for this request. This allows forwarding an intercepted request to the built-in handler. webRequest handlers will still be triggered when bypassing custom protocols.

protocol.handle('https', (req) => {
if (req.url === 'https://my-app.com') {
return new Response('<body>my app</body>')
} else {
return net.fetch(req, { bypassCustomProtocolHandlers: true })
}
})

Remarque : dans le processus utility les protocoles personnalisés ne sont pas pris en charge.

net.isOnline()

Retourne boolean - Indique si une connexion Internet existe actuellement.

Une valeur de retour de false indique que l'utilisateur ne pourra pas se connecter à des sites distants. Cependant, une valeur de retour à true donne une information incertaine car même si un lien est en ligne, rien n'indique qu'une tentative de connexion à un site distant particulier soit réussie.

net.resolveHost(host, [options])

  • host string - Nom d'hôte à résoudre.
  • options Object (facultatif)
    • queryType strin (facultatif) - Type de requête DNS demandée. Si non précisé, Le solveur sélectionnera A ou AAAA (ou les deux) en fonction des paramètres IPv4/IPv6 :
      • A - Récupérer uniquement les enregistrements A
      • AAAA - Récupère uniquement les enregistrements AAAA.
    • source string (facultatif) - Source à utiliser pour les adresses résolues. Par défaut le solveur choisira une source appropriée. N'affecte que l'utilisation de sources externes importantes (par exemple, l'appeler au système pour la résolution ou l'utilisation de DNS). Même si une source est spécifiée, les résultats peuvent toujours venir du cache, en résolvant "localhost" ou les litéraux IP, etc. Une des valeurs suivantes:
      • any (par défaut) - Le solveur choisira une source appropriée. Les résultats pouvant de sources telles que DNS, MulticastDNS, fichier HOSTS, etc
      • system - Les résultats ne seront alors récupérés qu'à partir du système ou de l'OS, par ex. via l’appel système à getaddrinfo()
      • dns - Les résultats ne proviendront que des requêtes DNS
      • mdns - Les résultats proviendront uniquement des requêtes DNS Multicast
      • localOnly - Aucune source externe ne sera utilisée. Les résultats ne viendront que à partir des sources locales rapides disponibles, quel que soit le paramètre source, p. ex., cache, fichier hôte, résolution littérale IP, etc.
    • cacheUsage string (facultatif) - Indique quelles entrées de cache DNS, si il en existe pouvant être utilisé pour fournir une réponse. Une des valeurs suivantes:
      • allowed (par défaut) - Les résultats peuvent provenir du cache hôte si le contenu n'est pas pémimé
      • staleAllowed - Les résultats peuvent provenir du cache de l'hôte même si ils sont périmés (par expiration ou changement de réseau)
      • disallowed - Les résultats ne viendront pas du cache de l'hôte.
    • secureDnsPolicy string (facultatif) - Contrôle le comportement du solveur de Secure DNS pour cette requête. Une des valeurs suivantes:
      • allow (par défaut)
      • disable

Retourne Promise<ResolvedHost> - qui se résout avec les adresses IP trouvées pour le host.

Cette méthode va résoudre les hôtes de la session par défaut . Pour résoudre un hôte d'une autre session, vous devrez utiliser ses.resolveHost().

Propriétés

net.online Readonly

Propriété de type boolean. Indique s'il y a actuellement une connexion Internet.

Une valeur de retour de false indique que l'utilisateur ne pourra pas se connecter à des sites distants. Cependant, une valeur de retour à true donne une information incertaine car même si un lien est en ligne, rien n'indique qu'une tentative de connexion à un site distant particulier soit réussie.