Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > permintaan memintas nodejs

permintaan memintas nodejs

王林
Lepaskan: 2023-05-27 18:42:38
asal
1017 orang telah melayarinya

Node.js ialah persekitaran masa jalan JavaScript sumber terbuka yang semakin popular dengan ekosistem yang besar dan komuniti aktif. Antaranya, modul HTTP Node.js menyediakan antara muka yang ringkas dan mudah digunakan, menjadikannya sangat mudah untuk mencipta pelayan web. Walau bagaimanapun, program web selalunya perlu memintas permintaan Sebelum memproses permintaan, permintaan mesti ditapis, disahkan, diubah suai, dll. Pada masa ini, memintas permintaan itu perlu digunakan. Dalam artikel ini, kami akan menerangkan cara memintas permintaan menggunakan Node.js.

1. Apakah pemintasan permintaan?

Pemintasan permintaan merujuk kepada operasi mengubah suai atau menapis permintaan sebelum pelanggan memulakan permintaan kepada pelayan ubah suai permintaan, rekod permintaan log, dsb.

2. Mengapa meminta pemintasan diperlukan

Dalam pembangunan sebenar, kami sering perlu memintas permintaan ini kerana:

  1. Sahkan sama ada parameter permintaan mematuhi. Spesifikasi: Parameter permintaan ialah jambatan penting antara klien dan pelayan Jika parameter permintaan tidak mematuhi spesifikasi, permintaan mungkin tidak diproses secara normal atau pelayan mungkin mempunyai kelemahan, menyebabkan masalah keselamatan.
  2. Menapis permintaan tidak sah: Memintas permintaan tidak sah boleh mengurangkan tekanan pada pelayan dan meningkatkan prestasi sistem.
  3. Ubah suai parameter permintaan: Selepas memintas permintaan, anda boleh mengubah suai parameter permintaan untuk mencapai kesan pemprosesan yang dijangkakan.
  4. Log permintaan merekod: Dengan memintas permintaan, kami boleh merekodkan log permintaan untuk memudahkan analisis dan penyahpepijatan sistem berikutnya.

3. Laksanakan pemintasan permintaan

Untuk melaksanakan pemintasan permintaan dalam Node.js, anda perlu menggunakan acara permintaan dalam modul http.

Pertama, kita perlu memperkenalkan modul http:

const http = require('http');
Salin selepas log masuk

Kemudian, kita boleh mencipta pelayan HTTP dan mendengar acara permintaan untuk melaksanakan pemintasan permintaan:

http.createServer((req, res) => {
    // 请求拦截代码
    // ...
}).listen(8080, ()=>{
    console.log(`Server is running on port 8080`);
})
Salin selepas log masuk

Sebelum memintas permintaan, Kami perlu menghuraikan parameter permintaan terlebih dahulu. Node.js disertakan dengan modul rentetan pertanyaan yang menghuraikan parameter permintaan Kami boleh menggunakannya untuk menghuraikan parameter permintaan. Contohnya:

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);
});
Salin selepas log masuk

Kod di atas boleh mendengar data dan acara tamat permintaan, menghuraikan parameter permintaan dalam permintaan POST dan mencetaknya.

Seterusnya, kita boleh menulis kod yang berkaitan untuk memintas permintaan.

  1. Pintasan laluan permintaan

Kita boleh mendapatkan laluan yang diminta melalui req.url. Jika laluan tidak memenuhi keperluan, kami boleh mengembalikan mesej ralat atau melompat ke halaman yang ditentukan.

Sebagai contoh, kod berikut memintas semua permintaan dengan laluan /bad dan mengembalikan halaman ralat:

if(req.url === '/bad') {
  res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
  res.write('<h1>出错了!</h1>');
  res.end();
}
Salin selepas log masuk
  1. Sahkan parameter permintaan

kami Parameter boleh disahkan dengan menghuraikan parameter permintaan. Jika parameter tidak memenuhi keperluan, kami boleh mengembalikan mesej ralat atau melompat ke halaman yang ditentukan.

Sebagai contoh, kod berikut memintas semua permintaan yang tidak mengandungi nama pengguna dalam parameter dan mengembalikan halaman ralat:

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();
    }
});
Salin selepas log masuk
  1. Ubah suai parameter permintaan

kami Anda boleh mengubah suai parameter permintaan untuk mencapai kesan pemprosesan yang diingini. Sebagai contoh, kod berikut menukar nama pengguna dalam parameter permintaan kepada huruf besar dan mengembalikan hasilnya:

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();
});
Salin selepas log masuk

IV Ringkasan

Dalam artikel ini, kami memperkenalkan apa itu pemintasan permintaan dan mengapa Perlu. gunakan pemintasan permintaan. Pada masa yang sama, kami juga menyediakan kod yang berkaitan untuk menggunakan Node.js untuk melaksanakan pemintasan permintaan, termasuk laluan memintas, mengesahkan parameter permintaan, mengubah suai parameter permintaan, dsb. Jika anda perlu memintas permintaan dalam pembangunan sebenar, anda mungkin ingin merujuk kepada kod dalam artikel ini untuk melaksanakannya.

Atas ialah kandungan terperinci permintaan memintas nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan