Node.js est un environnement d'exécution JavaScript open source de plus en plus populaire avec un énorme écosystème et une communauté active. Parmi eux, le module HTTP de Node.js fournit une interface simple et facile à utiliser, rendant très facile la création d'un serveur web. Cependant, les programmes Web doivent souvent intercepter les requêtes. Avant de traiter la requête, celle-ci doit être filtrée, vérifiée, modifiée, etc. À ce stade, l'interception de la requête doit être utilisée. Dans cet article, nous expliquerons comment intercepter les requêtes à l'aide de Node.js.
1. Qu'est-ce que l'interception de requêtes ? L'interception de requêtes fait référence à la modification ou au filtrage des requêtes avant que le client n'initie une requête au serveur. Elle peut être utilisée pour vérifier les paramètres de la requête, modifier les en-têtes de requête, enregistrer les journaux de requête, etc.
2. Pourquoi l'interception des requêtes est nécessaire
Dans le développement réel, nous devons souvent intercepter les requêtes parce que :
Vérifiez si les paramètres de la requête sont conformes aux spécifications : Les paramètres de la requête constituent un pont important entre le client et le client. serveur, si les paramètres de la demande ne répondent pas aux spécifications, cela peut empêcher la demande d'être traitée normalement ou le serveur présenter des vulnérabilités, provoquant des problèmes de sécurité.Pour implémenter l'interception des requêtes dans Node.js, vous devez utiliser l'événement request dans le module http.
Tout d'abord, nous devons introduire le module http :
const http = require('http');
Ensuite, nous pouvons créer un serveur HTTP et écouter les événements de requête pour implémenter l'interception de requête :
http.createServer((req, res) => { // 请求拦截代码 // ... }).listen(8080, ()=>{ console.log(`Server is running on port 8080`); })
Avant d'intercepter la requête, nous devons d'abord analyser les paramètres de la requête. Node.js est livré avec un module de chaîne de requête qui analyse les paramètres de requête. Nous pouvons l'utiliser pour analyser les paramètres de requête. Par exemple :
const queryString = require('querystring'); const postData = []; req.on('data', chunk => { postData.push(chunk); }); req.on('end', () => { const postParams = queryString.parse(Buffer.concat(postData).toString()); console.log(postParams); });
Le code ci-dessus peut écouter les données et mettre fin aux événements de la requête, analyser les paramètres de la requête dans la requête POST et les imprimer.
Ensuite, nous pouvons écrire le code pertinent pour l'interception des demandes.
Interception du chemin de requêtePar exemple, le code suivant intercepte toutes les requêtes avec des chemins dans /bad et renvoie une page d'erreur :
if(req.url === '/bad') { res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); res.write('<h1>出错了!</h1>'); res.end(); }
Par exemple, le code suivant intercepte toutes les requêtes qui ne contiennent pas de nom d'utilisateur dans les paramètres et renvoie une page d'erreur :
const queryString = require('querystring'); const postData = []; req.on('data', chunk => { postData.push(chunk); }); req.on('end', () => { const postParams = queryString.parse(Buffer.concat(postData).toString()); if(!postParams.username) { res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); res.write('<h1>出错了!</h1>'); res.end(); } });
const queryString = require('querystring'); const postData = []; req.on('data', chunk => { postData.push(chunk); }); req.on('end', () => { const postParams = queryString.parse(Buffer.concat(postData).toString()); postParams.username = postParams.username.toUpperCase(); res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); res.write(`<h1>您好,${postParams.username}!</h1>`); res.end(); });
IV Résumé
Dans cet article, nous avons présenté ce qu'est l'interception de requête et pourquoi nous devons utiliser l'interception de requête. Dans le même temps, nous fournissons également le code pertinent pour utiliser Node.js pour implémenter l'interception des requêtes, y compris les chemins d'interception, la vérification des paramètres de requête, la modification des paramètres de requête, etc. Si vous devez intercepter des requêtes en cours de développement, vous souhaiterez peut-être vous référer au code de cet article pour l'implémenter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!