Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > nodejs menetapkan maklumat pengepala respons

nodejs menetapkan maklumat pengepala respons

WBOY
Lepaskan: 2023-05-16 19:32:37
asal
1286 orang telah melayarinya

Dalam pembangunan web, maklumat pengepala respons HTTP adalah penting untuk penghantaran data dan pemprosesan permintaan. Pelayar web, perangkak dan jenis klien HTTP lain bergantung pada maklumat pengepala untuk menentukan kandungan, format dan ketersediaan respons.

Node.js, sebagai platform JavaScript sebelah pelayan, juga menyediakan cara untuk menetapkan, membaca dan mengubah suai maklumat pengepala respons HTTP. Dalam artikel ini, kami akan meneroka kaedah dan amalan terbaik untuk menetapkan pengepala respons dalam Node.js.

Maklumat pengepala HTTP dalam Node.js

Dalam modul HTTP Node.js, maklumat pengepala respons boleh ditetapkan melalui kaedah res objek setHeader(). Kaedah ini menerima dua parameter, yang pertama ialah nama pengepala dan yang kedua ialah nilai pengepala.

Sebagai contoh, kami boleh menetapkan maklumat pengepala Content-Type respons kepada text/html:

res.setHeader('Content-Type', 'text/html');
Salin selepas log masuk

Selain itu, untuk mengelakkan caching atau mendayakan pemampatan dan kes khas lain, kami juga boleh gunakan maklumat pengepala lain. Berikut adalah beberapa maklumat pengepala biasa dan penggunaannya.

Cache-Control

Pengepala ini digunakan untuk memaklumkan klien cara cache respons. Nilai biasa ialah:

  • no-store: Lumpuhkan cache dan perlukan permintaan baharu setiap kali.
  • no-cache: Boleh dicache, tetapi mesti disahkan sebelum digunakan (melalui If-Modified-Since atau ETag, dsb.).
  • max-age=<秒数>: Anda boleh cache dan menentukan masa cache Contohnya, max-age=3600 bermakna cache boleh digunakan dalam masa satu jam.

Sebagai contoh, untuk menentukan tiada caching:

res.setHeader('Cache-Control', 'no-cache');
Salin selepas log masuk

Pengekodan Kandungan

Pengepala ini digunakan untuk memaklumkan pelanggan cara memampatkan respons. Jika pelayan mendayakan mampatan (cth. menggunakan gzip), pelanggan boleh mengecam pengepala ini dan menyahmampatkannya secara automatik. Nilai biasa ialah:

  • gzip: Gunakan pemampatan gzip.
  • deflate: Gunakan mampatan kempis.
  • br: Gunakan pemampatan brotli.

Contohnya, untuk mendayakan pemampatan gzip:

res.setHeader('Content-Encoding', 'gzip');
Salin selepas log masuk

Panjang Kandungan

Pengepala ini menunjukkan saiz kandungan respons dalam bait. Jika pelayan tidak menyatakan nilai ini, pelanggan mungkin perlu menggunakan pengekodan chunked untuk penghantaran, yang akan mengakibatkan kecekapan penghantaran yang lebih rendah.

Sebagai contoh, untuk menentukan saiz kandungan respons sebanyak 1024 bait:

res.setHeader('Content-Length', 1024);
Salin selepas log masuk

ETag

Pengepala ini digunakan untuk menentukan pengecam kandungan respons. Ia boleh digunakan sebagai nilai pengepala If-None-Match dalam permintaan seterusnya untuk menentukan sama ada respons telah dikemas kini. Jika tiada kemas kini, kod status 304 boleh dikembalikan untuk mengelakkan penghantaran berulang.

Contohnya, untuk menentukan nilai ETag:

res.setHeader('ETag', '123456789');
Salin selepas log masuk

Terakhir Diubah Suai

Pengepala ini digunakan untuk menentukan masa pengubahsuaian terakhir kandungan respons. Ia boleh digunakan sebagai nilai pengepala If-Modified-Since dalam permintaan seterusnya untuk menentukan sama ada respons telah dikemas kini.

Sebagai contoh, untuk menentukan masa pengubahsuaian terakhir:

res.setHeader('Last-Modified', 'Sat, 10 Apr 2021 00:00:00 GMT');
Salin selepas log masuk

Amalan Terbaik

Selain maklumat pengepala di atas, Node.js juga menyediakan maklumat pengepala lain (seperti Akses -, X-, Kuki, dsb.), yang boleh digunakan mengikut keperluan sebenar projek. Walau bagaimanapun, amalan terbaik berikut perlu diikuti dalam amalan.

1 Ikut spesifikasi standard

Walaupun protokol HTTP menentukan banyak maklumat pengepala, tidak semua maklumat pengepala perlu ditetapkan dalam setiap respons. Anda perlu memilih berdasarkan keperluan sebenar dan mengikut piawaian dan spesifikasi yang sepadan (seperti yang dinyatakan dalam dokumen RFC).

2. Dayakan pemampatan respons dengan sewajarnya

Jika anda ingin mendayakan pemampatan respons, anda perlu mengkonfigurasinya dengan sewajarnya pada pelayan dan pelanggan. Pada masa yang sama, faktor seperti persekitaran rangkaian dan prestasi pelayan juga perlu dipertimbangkan untuk mengelakkan masalah seperti kemerosotan prestasi atau kerosakan data yang disebabkan oleh pemampatan.

3. Elakkan kemas kini ETag dan Last-Modified

Dalam aplikasi sebenar, jika maklumat pengepala seperti ETag dan Last-Modified kerap dikemas kini, ia boleh menyebabkan cache penyemak imbas menjadi tidak sah , sekali gus menjejaskan prestasi dan pengalaman pengguna.

4. Kendalikan maklumat sensitif seperti kuki dengan selamat

Apabila menetapkan maklumat pengepala, anda perlu memberi perhatian khusus kepada isu keselamatan untuk mengelakkan kelemahan keselamatan seperti XSS, CSRF dan suntikan SQL. Contohnya, apabila menetapkan kuki, anda perlu menggunakan atribut seperti HttpOnly dan Secure untuk memastikan kerahsiaan dan integriti kuki.

Kesimpulan

Node.js menyediakan API yang kaya untuk menetapkan, membaca dan mengubah suai maklumat pengepala respons HTTP. Penggunaan maklumat pengepala yang betul boleh meningkatkan prestasi, kebolehpercayaan dan keselamatan tapak web anda serta mengelakkan masalah HTTP biasa.

Dalam projek sebenar, maklumat pengepala yang paling sesuai hendaklah dipilih mengikut keperluan dan mengikut piawaian dan spesifikasi yang berkaitan. Pada masa yang sama, langkah keselamatan yang sepadan perlu diambil untuk mengelakkan kelemahan keselamatan dan kebocoran data.

Atas ialah kandungan terperinci nodejs menetapkan maklumat pengepala respons. 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