Node.js は、巨大なエコシステムと活発なコミュニティを備えたオープンソース JavaScript ランタイム環境として人気が高まっています。その中でも、Node.js の HTTP モジュールはシンプルで使いやすいインターフェースを提供しており、非常に簡単に Web サーバーを作成できます。ただし、Web プログラムではリクエストをインターセプトする必要があることが多く、リクエストを処理する前に、リクエストのフィルター、検証、変更などを行う必要があります。このとき、リクエストのインターセプトを使用する必要があります。この記事では、Node.jsを使用してリクエストをインターセプトする方法を説明します。
1. リクエスト インターセプトとは何ですか?
リクエスト インターセプトとは、クライアントがサーバーへのリクエストを開始する前に、リクエストを変更またはフィルタリングする操作を指します。リクエスト パラメーターの検証や、リクエストのヘッダーの変更、リクエストのログの記録など。
2. リクエストのインターセプトが必要な理由
実際の開発では、リクエストのインターセプトが必要になることがよくあります。仕様: リクエストパラメータはクライアントとサーバー間の重要な橋渡しとなるため、リクエストパラメータが仕様に準拠していない場合、リクエストが正常に処理されなかったり、サーバーに脆弱性が発生してセキュリティ上の問題が発生したりする可能性があります。
const http = require('http');
http.createServer((req, res) => { // 请求拦截代码 // ... }).listen(8080, ()=>{ console.log(`Server is running on port 8080`); })
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); });
リクエスト パスのインターセプト
if(req.url === '/bad') { res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); res.write('<h1>出错了!</h1>'); res.end(); }
Verify requestparameters
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(); });
以上がNodejs リクエストをインターセプトするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。