Rumah  >  Artikel  >  hujung hadapan web  >  Cara mengkonfigurasi proksi menggunakan komponen penghalaan dalam Node.js

Cara mengkonfigurasi proksi menggunakan komponen penghalaan dalam Node.js

PHPz
PHPzasal
2023-04-17 16:43:531122semak imbas

Dengan pembangunan pembangunan bahagian hadapan, semakin banyak aplikasi perlu berkomunikasi dengan pelayan bahagian belakang melalui antara muka API. Tetapi satu masalah yang dihadapi pembangun ialah cara memintas sekatan silang asal, mekanisme yang diperkenalkan oleh penyemak imbas atas sebab keselamatan untuk mencegah serangan merentas tapak.

Proksi ialah cara biasa untuk menyelesaikan sekatan silang asal. Dengan menghantar permintaan penyemak imbas ke pelayan proksi, dan pelayan proksi memajukan permintaan ke alamat antara muka sebenar, kami boleh memintas sekatan silang asal dan mengakses antara muka. Dalam artikel ini, kami akan membincangkan cara mengkonfigurasi proksi menggunakan komponen penghalaan dalam Node.js.

Pilihan untuk mengkonfigurasi proksi

Dalam Node.js, kami mempunyai berbilang pilihan untuk mengkonfigurasi proksi. Mengambil Express sebagai contoh, penyelesaian yang biasa digunakan adalah seperti berikut:

  1. Gunakan pemalam http-proxy-middleware
  2. Perisian tengah tersuai untuk melaksanakan
  3. Gunakan Node. Modul http yang disertakan dengan js

Dalam artikel ini, kami akan memperkenalkan penyelesaian pertama.

1. Pasang pemalam

Kami perlu memasang pemalam http-proxy-middleware untuk melaksanakan fungsi proksi.

$ npm install http-proxy-middleware --save-dev

2. Konfigurasikan penghalaan dan proksi

Dalam Express, kita boleh menggunakan kaedah express.Router() untuk mencipta kejadian penghalaan. Kami boleh mengkonfigurasi proksi untuk setiap contoh penghalaan.

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
const router = express.Router();

// 配置代理
router.use('/api', createProxyMiddleware({ 
   target: 'http://www.example.com', 
   changeOrigin: true 
}));

app.use(router);

// 启动服务器
const server = app.listen(3000, () => {
   const { address, port } = server.address(); 
   console.log(`Listening on http://${address}:${port}`);
});

Kod di atas memproksi permintaan dengan alamat penghalaan /api ke alamat http://www.example.com dengan mengkonfigurasi laluan.

Dalam createProxyMiddleware, kami boleh mengkonfigurasi berbilang pilihan untuk menyesuaikan konfigurasi proksi. Sebagai contoh, kita boleh menggunakan pilihan pathRewrite untuk menulis semula laluan untuk mengalih keluar awalan /api dalam alamat penghalaan untuk memadankan alamat antara muka sebenar:

router.use('/api', createProxyMiddleware({ 
   target: 'http://www.example.com', 
   changeOrigin: true, 
   pathRewrite: { '^/api': '' } 
}));

Kod di atas akan mengalih keluar laluan masa hadapan /api awalan.

3. Konfigurasikan pemintas

Selain mengkonfigurasi proksi, kami juga boleh mengkonfigurasi pemintas untuk menyesuaikan tingkah laku proksi. Pemintas digunakan untuk memproses permintaan dan respons Contohnya, kita boleh menambah maklumat pengepala sebelum permintaan dimulakan, atau memproses nilai pulangan selepas respons permintaan.

Dalam http-proxy-middleware, kami boleh mengkonfigurasi pemintas melalui onProxyReq dan onProxyRes dua pilihan.

//
router.use('/api', createProxyMiddleware({
   target: 'http://www.example.com',
   changeOrigin: true,
   onProxyReq: (proxyReq, req, res) => {
      // 在请求发起前添加头部信息
      proxyReq.setHeader('Authorization', 'Bearer ' + token);
   },
   onProxyRes: (proxyRes, req, res) => {
      // 在响应返回后处理返回值
      const data = proxyRes.body.toString('utf8');
      const newData = JSON.parse(data).result;
      res.send(newData);
   }
}));

Dalam kod di atas, kami menambahkan maklumat pengepala bernama Authorization dalam onProxyReq dan memproses nilai pulangan dalam onProxyRes.

Ringkasan

Melalui pengenalan di atas, kami telah mempelajari cara menggunakan pemalam http-proxy-middleware untuk melaksanakan fungsi proksi penghalaan, dan kami juga telah mempelajari cara melaksanakannya melalui perisian tengah. Di samping itu, kami juga belajar untuk mengkonfigurasi pemintas untuk mengendalikan permintaan dan respons.

Node.js menyediakan banyak alatan mudah untuk membantu kami melaksanakan fungsi proksi, membantu pembangun membina dan menggunakan aplikasi dengan cepat. Saya harap artikel ini akan membantu anda menggunakan proksi untuk menyelesaikan masalah komunikasi merentas tapak dalam kerja pembangunan bahagian belakang anda.

Atas ialah kandungan terperinci Cara mengkonfigurasi proksi menggunakan komponen penghalaan dalam Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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