Ketahui beberapa super praktikal pengepala respons , selesaikan masalah yang anda hadapi di tempat kerja.
bukan sahaja menyelesaikan masalah, tetapi juga memberi anda kelebihan apabila anda bertentangan dengan bahagian belakang dan operasi serta penyelenggaraan.
Ia sangat penting.
Jika anda tidak percaya saya, lihat adegan di bawah, adakah ia kelihatan biasa?
Saya mendengar daripada rakan sekerja saya lebih daripada sekali , rakan kumpulan membincangkan isu ini:
"Halaman belakang menyediakan muat turun fail
txt
(atauurl
, yang boleh saya gunakana
Apabila label dibuka, ia bertukar menjadi pratonton... Apakah yang perlu saya lakukan? "
Pada masa ini, seseorang akan mengesyorkan FileSaver.js
atau "Simpan aliran bacaan tulisan tangan sebagai".
Kemudian orang lain bergema...
Saya:? ? ?
Adakah ini masalah yang memerlukan penulisan kod untuk diselesaikan?
Jika anda telah memahami Content-Disposition
ini Response Header
, maka anda mesti tahu bahawa masalah itu boleh diselesaikan dengan hanya menambah satu baris pada pengepala respons.
Content-Disposition
: Pengepala respons ini boleh menentukan sama ada kandungan itu pratonton atau muat turun.
Ia menyokong tiga format nilai:
Content-Disposition: inline
Pada masa ini, badan mesej akan dipaparkan sebagai sebahagian daripada halaman atau keseluruhan halaman . (Pratonton)
Content-Disposition: attachment
Isi mesej harus dimuat turun, nama fail lalai berkaitan dengan format url
.
Content-Disposition: attachment; filename="filename.jpg"
Isi mesej harus dimuat turun, nama fail lalai boleh ditentukan.
Untuk tujuan ini, saya menulis khasNota: Jika anda perlu pratonton, anda perlu memakannya dengan
Content-Type
yang sesuai; 🎜>
express
express
const user = { name: "摸鱼的春哥", blogUrl: "https://juejin.cn/user/1714893870865303" } const contentDispositionInline = async (req, res, next) => { res.setHeader('Content-Disposition', 'inline') res.send(user) } const contentDispositionFilename = async (req, res, next) => { res.setHeader('Content-Disposition', 'attachment; filename="chunge.json"') res.send(user) } const contentDispositionNoFilename = async (req, res, next) => { res.setHeader('Content-Disposition', 'attachment') res.send(user) }
. Jangan kaitkan masalah anda dengan Bug
cache penyemak imbas
sama ada.
Cache penyemak imbas
Oleh itu, memahami cara menggunakan pengepala respons adalah kemahiran yang mesti diketahui untuk bahagian hadapan.
2.2 Pengenalan
Cache-Control
: Digunakan untuk menentukan mekanisme caching.
Response Header属性 | 值 | 含义 |
---|---|---|
cache-control | no-store | 不缓存,这个会让客户端、服务器都不缓存,也就没有所谓的强缓存、协商缓存了。 |
cache-control | public | 表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存,即使是通常不可缓存的内容。(例如:1.该响应没有max-age指令或Expires消息头;2. 该响应对应的请求方法是 POST 。) |
cache-control | private | 表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它)。私有缓存可以缓存响应内容,比如:对应用户的本地浏览器。 |
cache-control | max-age= | 设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒)。与Expires相反,时间是相对于请求的时间。 |
Cache-Control: no-store
pengepala respons. hash化命名的文件
), ia boleh diperolehi terus daripada cache setempat Ini adalah apa yang dipanggil Kuat Cache ;cache-control: public/private
atau cache-control: max-age=
. hash
dan bertanya kepada pelayan sama ada sumber itu telah berubah, untuk mencapai kesan caching yang tepat . hash
boleh dicache dengan kuat. hash
nama juga akan berubah) cdn
, adalah disyorkan untuk membawa maklumat versi, yang juga boleh mendayakan caching yang kuat. /xx/xx/jquery.min.js
ditukar kepada jquery@3.6.0/dist/jquery.min.js
) html
dan ico
, disyorkan untuk bukan cache atau berunding Cache . Cookie
saya tidak boleh secomel ini! "Abang Chun, Abang Chun, kenapa saya berjaya log masuk tetapi permintaan masih
401
?"
"Abang Chun, Abang Chun, kenapa saya tidak dapat nilai yang saya depositkan
cookie
?"
bergantung padanya"Abang Chun, Abang Chun, ini rosak
? Itu sahaja! Itu sahaja! Semua jenis anomali tentangcookie
Adakah ia jelas berharga dalam pelayar, tetapi mengapa saya tidak dapat mengaksesnya? pengepala respons dipanggil
set-cookie
dahulunya merupakan ambang yang tidak boleh dilewati dalam pembangunan cookie
Kini kewujudannya semakin lemah, tetapi projek-projek besar yang sedia ada tidak akan hilang kerana trend teknologi mereka masih bernilai dan masih perlu dikekalkan.
. Cookie
Web
set-cookie
: Ia adalah pengepala respons, yang diberikan oleh pelayan, membenarkan penyemak imbas menjana Cookie
dan mengehadkan pelbagai ciri .
Expires=<date></date>
Max-Age=<number></number>
0
atau -1
langsung tidak sah; atribut ini mempunyai keutamaan yang lebih tinggi daripada Expires
. Domain=<domain-value></domain-value>
cookie
hanya boleh dijana; > Path=<path-value></path-value>
hanya apabila laluan Domain
xx
hanya dijana dalam Cookie
; Https
dalam pengepala Secure
, penyemak imbas hanya akan menjana dan menghantar set-cookie
persekitaran. Secure
Https
Lumpuhkan operasi Cookie
js
Jika terdapat atribut API
dalam pengepala HttpOnly
, maka penjanaan, membaca, menulis dan menghantar set-cookie
melalui HttpOnly
. Sama ada Cookie
js
dibenarkan untuk dibawa merentasi domain; Cookie
SameSite=<samesite-value></samesite-value>
dan Strict
Lax
None
: Bukan merentas domain sama sekali Bawa; Strict
: hanya dibenarkan dibawa apabila menavigasi dari tapak luar ke tapak asal Lax
Cookie
: silang-. domain juga dibenarkan, tiada sekatan. None
Banyak projek awal menggunakan 401
sebagai cara pengenalan pengguna Contohnya, projek
sebagai pengenalan untuk menentukan sama ada anda berada dalam sesi semasa. Cookie
Spring MVC
Bagi fenomena "log masuk, tetapi masih Cookie
", jika tiada masalah di bahagian pelayan, mungkin JSeesionId
pelayar sebenarnya tidak menyimpan kuki
401
Dalam erti kata lain, setiap kali anda membuat permintaan, pelayan menganggap anda adalah sesi baharu, dan anda bukan orang yang sama seperti kali terakhir anda
. Jika anda berada dalam persekitaran , anda mungkin mahu mengalih keluar atribut buat sementara waktu.
http
Secure
Tidak dapat menyimpan atau mengeluarkan?
mempunyai sekatan laluan
, sama ada mempunyai ?Selesaikan masalah mereka satu demi satu dan masalah tidak Sukar untuk diselesaikan. HttpOnly
(Belajar perkongsian video:
Atas ialah kandungan terperinci [Kompilasi dan Ringkasan] Beberapa pengepala respons praktikal yang mesti diketahui oleh bahagian hadapan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!