Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 9827|Jawab: 0

Protokol HTTP Transfer-Encoding (dipotong)

[Salin tautan]
Diposting pada 24/09/2019 18.07.57 | | | |
1. Latar belakang:

  • Masalah koneksi persisten: Untuk koneksi non-persisten, browser dapat menentukan batas entitas permintaan atau respons berdasarkan apakah koneksi tidak aktif atau tidak; Untuk koneksi berkelanjutan, pendekatan ini jelas tidak berhasil. Terkadang, meskipun saya telah mengirim semua data, browser tidak tahu apakah akan ada data baru yang masuk pada koneksi terbuka, jadi hanya menunggu.
  • Selesaikan dengan Content-length: Hitung panjang entitas dan beri tahu pihak lain melalui kepala. Browser dapat mengetahui bahwa entitas respons sudah berakhir dengan informasi panjang Content-Length
  • Masalah baru dengan Content-length: Karena bidang Content-Length harus benar-benar mencerminkan panjang entitas, panjangnya tidak diketahui untuk konten yang dihasilkan secara dinamis hingga konten dibuat. Saat ini, untuk mendapatkan panjangnya secara akurat, Anda hanya dapat membuka buffer yang cukup besar dan menunggu semua konten dihasilkan sebelum menghitung. Namun, ini membutuhkan lebih banyak overhead memori di satu sisi, dan di sisi lain, itu akan membuat klien menunggu lebih lama.
  • Kita membutuhkan mekanisme baru yang tidak bergantung pada panjang header dan mengetahui batas-batas entitas - Transfer-Encoding: chunked.

2. Transfer-Pengkodean (dipotong)

  • Transfer-Encoding adalah bidang header HTTP (bidang header respons), yang secara harfiah berarti "pengkodean transfer". Spesifikasi HTTP terbaru hanya mendefinisikan satu jenis transportasi pengodean: dipotong-potong.
  • Pengkodean transfer chunked adalah mekanisme transfer data dalam Hypertext Transfer Protocol (HTTP) yang memungkinkan data HTTP yang dikirim oleh server web ke klien dibagi menjadi beberapa bagian. Pengodean transportasi blok hanya tersedia dalam protokol HTTP versi 1.1 (HTTP/1.1).
  • Data dipecah menjadi serangkaian potongan dan dikirim dalam satu atau lebih potongan sehingga server dapat mengirim data tanpa mengetahui ukuran total konten yang dikirim terlebih dahulu.


Metode khusus

  • Setelah menambahkan Transfer-Encoding: dipotong ke header, itu berarti paket dipotong-potong. Dalam hal ini, entitas dalam paket perlu ditransmisikan dalam serangkaian potongan sebagai gantinya.
  • Setiap potongan berisi nilai dan data panjang heksadesimal, dan nilai panjangnya eksklusif untuk satu baris, dan panjangnya tidak termasuk CRLF di ujungnya, atau CRLF di akhir data yang dipotong.
  • Nilai panjang potongan terakhir harus 0, dan data potongan yang sesuai tidak memiliki konten, yang menunjukkan akhir entitas.




asp.net Kode pengujian inti:







Mantan:Content-Length protokol Http
Depan:Tiga faktor yang membuat saya tidak memandang Chrome
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com