Gestionnaire de messages pour filtrer les requêtes réseau – Exemples en C#
L’utilisation de gestionnaires de messages est un modèle typique dans le développement de logiciels. Les gestionnaires de messages sont utilisés pour intercepter et traiter les messages dans un pipeline. Dans cet article, nous allons créer des gestionnaires de messages personnalisés qui filtrent les demandes de réseau et désactivent celles qui sont indésirables. Vous trouverez des exemples simples en C# sur la façon d’appliquer les gestionnaires de messages pour les opérations réseau.
Demandes de réseaux – Network Requests
Dans le domaine du génie logiciel, les requêtes réseau font référence à une application client qui envoie une requête à un serveur via le réseau et qui reçoit une réponse du serveur. Les gestionnaires de messages constituent un moyen puissant d’intercepter et de traiter ces demandes et réponses réseau Cet article présente des exemples d’interception de requêtes, de blocage de certaines requêtes réseau indésirables ou de remplacement des URL par d’autres valeurs.
Gestionnaire de messages pour filtrer les demandes du réseau
La bibliothèque Aspose.HTML for .NET offre des fonctionnalités qui peuvent s’avérer utiles dans les scénarios où vous souhaitez restreindre certains types de requêtes réseau dans une application de traitement HTML. Par exemple, si vous travaillez avec des documents HTML et que vous voulez vous assurer que seuls certains types de ressources sont chargés à partir de sources externes. Ce code permet de filtrer les requêtes réseau indésirables. Il met en place un NetworkDisabledMessageHandler
qui n’autorise que les requêtes utilisant les protocoles “file :”, “about :” ou “base64 :”. Si la requête utilise un autre protocole, le gestionnaire la bloque.
1// Disable external network access while allowing local and embedded resources
2
3// Define the NetworkDisabledMessageHandler class that is derived from the MessageHandler class
4public class NetworkDisabledMessageHandler : MessageHandler
5{
6 // Override the Invoke() method
7 public override void Invoke(INetworkOperationContext context)
8 {
9 if (context.Request.RequestUri.Protocol == "file:" ||
10 context.Request.RequestUri.Protocol == "base64:" ||
11 context.Request.RequestUri.Protocol == "about:")
12 Next(context);
13 }
14}
L’extrait de code C# ci-dessus crée un gestionnaire de messages pour personnaliser le comportement des demandes de réseau en fonction de leurs protocoles :
- Utilisez l’espace de nommage nécessaire, à savoir Aspose.Html.Net.
- Définissez une classe personnalisée
NetworkDisabledMessageHandler
. Cette classe hérite de la classe MessageHandler et surcharge sa méthode Invoke() pour gérer les opérations réseau. - Vous pouvez personnaliser la logique de la méthode Invoke() pour traiter les demandes de réseau en fonction de vos besoins spécifiques. Utilisez la propriété RequestUri de la classe RequestMessage et la propriété Protocol pour vérifier si le protocole de la demande est “file :”, “base64 :” ou “about :”. Si c’est le cas, le code poursuit le traitement de la demande ; dans le cas contraire, les demandes sont automatiquement bloquées.
Ce gestionnaire de messages personnalisé peut filtrer les demandes de réseau dans votre projet ou application .NET.
Comment filtrer les demandes de réseau non souhaitées ?
Voici un exemple de la façon dont vous pouvez utiliser la classe NetworkDisabledMessageHandler
pour filtrer les requêtes réseau indésirables à l’aide de la bibliothèque Aspose.HTML :
- Créez une instance de la classe Configuration à l’aide du constructeur Configuration().
- Appeler la méthode GetService<INetworkService>() sur l’objet de configuration pour récupérer une instance de l’interface INetworkService.
- Utilisez la méthode Insert() pour ajouter le gestionnaire de messages au sommet de la chaîne de gestionnaires de messages existante. Cela signifie que toutes les requêtes réseau faites à travers INetworkService passeront d’abord par
NetworkDisabledMessageHandler
. - Créer une instance de la classe HTMLDocument, en lui transmettant le chemin d’accès au fichier HTML et l’objet de configuration.
1// Disable network requests when loading HTML
2
3// Create an instance of the Configuration class
4using Configuration configuration = new Configuration();
5
6// Call the INetworkService which contains the functionality for managing network operations
7INetworkService network = configuration.GetService<INetworkService>();
8
9// Add the TimeoutMessageHandler to the top of existing message handler chain
10network.MessageHandlers.Insert(0, new NetworkDisabledMessageHandler());
11
12// Prepare path to a source document file
13string documentPath = Path.Combine(DataDir, "document.html");
14
15// Create an HTML document with a custom configuration
16using HTMLDocument document = new HTMLDocument(documentPath, configuration);
Vous pouvez télécharger les exemples complets et les fichiers de données sur GitHub.