Rumah  >  Artikel  >  hujung hadapan web  >  Nodejs tidak perlu memasang https

Nodejs tidak perlu memasang https

PHPz
PHPzasal
2023-05-18 09:45:08500semak imbas

Apabila membangunkan aplikasi Node.js, kami selalunya perlu melaksanakan permintaan dan respons HTTPS untuk memastikan keselamatan komunikasi dan penyulitan data. Pendekatan biasa ialah memasang dan mengkonfigurasi modul HTTPS Node.js sendiri, atau menggunakan modul pihak ketiga untuk melaksanakan HTTPS. Walau bagaimanapun, dalam beberapa kes, kami mungkin tidak perlu memasang HTTPS dan boleh melaksanakan komunikasi HTTPS tanpa menggunakan modul HTTPS.

Secara umumnya, untuk membangunkan aplikasi HTTPS, kita perlu menukar pelayan HTTP kepada pelayan HTTPS. Pelayan HTTP terikat pada port 80, manakala pelayan HTTPS terikat pada port 443. Pelayan HTTPS memerlukan sijil SSL untuk membuat saluran yang disulitkan. Oleh itu, pendekatan biasa ialah memasang dan mengkonfigurasi modul HTTPS Node.js sendiri, atau menggunakan modul pihak ketiga.

Walau bagaimanapun, dalam beberapa kes, seperti apabila kami hanya menyahpepijat aplikasi secara setempat, atau aplikasi kami hanya perlu membuat permintaan dan respons HTTP yang mudah tanpa komunikasi disulitkan HTTPS sebenar, maka kami boleh Melangkau langkah-langkah untuk memasang modul HTTPS dan melaksanakan komunikasi HTTPS secara langsung pada pelayan HTTP.

Kaedah pelaksanaan khusus adalah seperti berikut:

Pertama, anda perlu menambah sokongan HTTPS pada pelayan HTTP:

const http = require('http');
const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World!
');
});

https.createServer(options, server).listen(443);

Di sini kami mencipta satu melalui terbina dalam https.createServer() kaedah pelayan HTTPS Node.js, sambil menggunakan kaedah http.createServer() terbina dalam Node.js untuk mencipta pelayan HTTP. Di sini anda juga perlu memuatkan modul fs untuk membaca sijil SSL key.pem dan cert.pem ialah kunci peribadi dan awam bagi sijil SSL. Ini adalah contoh yang sangat mudah, ia hanya membalas dengan respons 'Hello World!'

Perlu diambil perhatian bahawa pelayan HTTPS yang dibuat di sini bergantung pada pelayan HTTP, jadi objek pelayan HTTP server perlu dihantar sebagai parameter kepada kaedah https.createServer().

Seterusnya, kami perlu mengubah hala penyemak imbas ke pelayan HTTPS yang kami buat.

const http = require('http');
const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

const httpServer = http.createServer((req, res) => {
  res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
  res.end();
});

const httpsServer = https.createServer(options, (req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World!
');
}).listen(443);

httpServer.listen(80);

Di sini kami mencipta pelayan HTTP dan mendengar pada port 80. Apabila klien meminta pelayan HTTP, kami akan mengubah hala klien ke pelayan HTTPS dan memastikan URL yang diminta oleh klien tidak berubah. Dengan cara ini pelanggan boleh berkomunikasi dengan pelayan melalui HTTPS dan data kami dilindungi oleh penyulitan.

Perlu diambil perhatian bahawa pengalihan di sini dicapai dengan menetapkan res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url }). 301 ialah kod status ubah hala, yang menunjukkan ubah hala kekal. req.headers['host'] ialah alamat hos yang diminta oleh pelanggan dan req.url ialah laluan URL yang diminta oleh pelanggan.

Apabila pelanggan meminta pelayan HTTPS, kami boleh membuat respons dan menghantarnya semula kepada klien seperti sebelum ini. Sudah tentu, dalam persekitaran pengeluaran, kami harus memastikan pelayan HTTPS kami dikonfigurasikan dengan betul dan selamat.

Ringkasnya, walaupun kami tidak menggunakan modul HTTPS, kami boleh melaksanakan komunikasi HTTPS dalam aplikasi Node.js dengan mengubah hala permintaan HTTP ke pelayan HTTPS dengan hanya beberapa baris kod. Sudah tentu, kita harus mempertimbangkan dengan teliti sama ada untuk menggunakan kaedah ini Apabila kita perlu menyulitkan komunikasi dan memastikan keselamatan, kita harus menggunakan modul HTTPS biasa atau modul pihak ketiga.

Atas ialah kandungan terperinci Nodejs tidak perlu memasang https. 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
Artikel sebelumnya:Mengapa nodejs berulir tunggalArtikel seterusnya:Mengapa nodejs berulir tunggal