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.
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');
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.
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');
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');
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);
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');
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');
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.
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).
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.
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.
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.
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!