Rumah >pembangunan bahagian belakang >Golang >Sekiranya anda Hadkan Permintaan Saiz Badan dalam Go untuk Pengurusan Sumber yang Lebih Baik?
Soalan:
Adakah dinasihatkan untuk mengehadkan lagi saiz bentuk apabila menggunakan Pergi?
Jawapan:
Ya, adalah dinasihatkan untuk mengehadkan saiz permintaan borang untuk mengelakkan penggodam sumber. Had lalai ialah 10MB, tetapi anda boleh mengurangkannya lagi mengikut keperluan.
Kod:
Untuk mengehadkan saiz badan permintaan, gunakan fungsi MaxBytesReader. Berikut ialah contoh:
r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) err := r.ParseForm() if err != nil { // Redirect or set error status code. return }
Pengendalian Ralat:
Apabila saiz badan permintaan melebihi had, MaxBytesReader menetapkan bendera pada respons. Bendera ini disemak apabila pengendali kembali. Jika bendera ditetapkan, pelayan menutup sambungan dan tidak membaca kandungan permintaan yang tinggal. Oleh itu, tidak perlu menangani ralat dalam kod secara eksplisit.
Pertimbangan Keselamatan:
Untuk melindungi daripada pelanggan berniat jahat, tetapkan Server.ReadTimeout, Server.WriteTimeout dan Server.MaxHeaderBytes juga.
Global Had:
Jika anda ingin menetapkan had badan permintaan untuk semua pengendali anda, bungkus pengendali akar dengan pengendali tersuai seperti ini:
type maxBytesHandler struct { h http.Handler n int64 } func (h *maxBytesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { r.Body = http.MaxBytesReader(w, r.Body, h.n) h.h.ServeHTTP(w, r) }
Kemudian, bungkus akar pengendali apabila memanggil ListenAndServe atau mengkonfigurasi a pelayan.
Kesimpulan:
Dengan menggunakan MaxBytesReader dan menggunakan konfigurasi keselamatan yang sesuai, anda boleh mengehadkan saiz badan permintaan dengan berkesan dalam aplikasi Go anda untuk mengelakkan kehabisan sumber.
Atas ialah kandungan terperinci Sekiranya anda Hadkan Permintaan Saiz Badan dalam Go untuk Pengurusan Sumber yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!