Có thể cho tôi xem một phiên http mẫu với các yêu cầu phạm vi không. Ý tôi là tiêu đề yêu cầu và phản hồi sẽ như thế nào?
Có thể cho tôi xem một phiên http mẫu với các yêu cầu phạm vi không. Ý tôi là tiêu đề yêu cầu và phản hồi sẽ như thế nào?
Câu trả lời:
Trao đổi sau là giữa Chrome và một máy chủ web tĩnh, lấy một video MP4.
Yêu cầu ban đầu - đối với video. Lưu ý Accept-Ranges
tiêu đề phản hồi để cho biết máy chủ có hỗ trợ tiêu đề phạm vi:
GET /BigBuckBunny_320x180.mp4
Cache-Control: max-age=0
Connection: keep-alive
Accept-Language: en-GB,en-US,en
Host: localhost:8080
Range:
Accept: text/html,application/xhtml+xml,application/xml,*/*
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ...
Accept-Encoding: gzip,deflate,sdch
Accept-Charset: ISO-8859-1,utf-8,*
200 OK
Content-Type: video/mp4
Connection: keep-alive
Last-Modified: Wed,14 Dec 2011 15:50:59 GMT
ETag: A023EF02BD589BC472A2D6774EAE3C58
Transfer-Encoding:
Content-Length: 64657027
Accept-Ranges: bytes
Server: Brisket/1.0.1
Date: Wed,14 Dec 2011 16:11:24 GMT
Đã phát hiện tiêu đề phạm vi trong phản hồi trước đó - yêu cầu tiếp theo với phạm vi kết thúc mở để xác nhận hỗ trợ. Phản hồi trả về trạng thái và Content-Range
tiêu đề 206 để chỉ ra các byte có trong nội dung phản hồi:
GET /BigBuckBunny_320x180.mp4
Connection: keep-alive
Accept-Language: en-GB,en-US,en
Host: localhost:8080
Range: bytes=0-
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ...
Referer: http://localhost:8080/BigBuckBunny_320x180.mp4
Accept-Encoding: identity
Accept-Charset: ISO-8859-1,utf-8,*
206 Partial Content
Content-Type: video/mp4
Connection: keep-alive
Last-Modified: Wed,14 Dec 2011 15:50:59 GMT
ETag: A023EF02BD589BC472A2D6774EAE3C58
Transfer-Encoding:
Content-Length: 64657027
Accept-Ranges: bytes
Server: Brisket/1.0.1
Date: Wed,14 Dec 2011 16:11:25 GMT
Content-Range: bytes 0-64657026/64657027
Yêu cầu dải ô tiếp theo để nắm bắt phần cuối của tệp (có thể là để nắm bắt siêu dữ liệu theo sau):
GET /BigBuckBunny_320x180.mp4
Connection: keep-alive
Accept-Language: en-GB,en-US,en
Host: localhost:8080
Range: bytes=64312833-64657026
Accept: */*
If-Range: A023EF02BD589BC472A2D6774EAE3C58
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ...
Referer: http://localhost:8080/BigBuckBunny_320x180.mp4
Accept-Encoding: identity
Accept-Charset: ISO-8859-1,utf-8,*
206 Partial Content
Content-Type: video/mp4
Connection: keep-alive
Last-Modified: Wed,14 Dec 2011 15:50:59 GMT
ETag: A023EF02BD589BC472A2D6774EAE3C58
Transfer-Encoding:
Content-Length: 344194
Accept-Ranges: bytes
Server: Brisket/1.0.1
Date: Wed,14 Dec 2011 16:11:25 GMT
Content-Range: bytes 64312833-64657026/64657027
Người dùng nhấp vào thanh tiến trình video ngoài phạm vi đã tải xuống - yêu cầu phạm vi được đưa ra để bắt đầu phát từ vị trí đã chọn:
GET /BigBuckBunny_320x180.mp4
Connection: keep-alive
Accept-Language: en-GB,en-US,en
Host: localhost:8080
Range: bytes=1073152-64313343
Accept: */*
If-Range: A023EF02BD589BC472A2D6774EAE3C58
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ...
Referer: http://localhost:8080/BigBuckBunny_320x180.mp4
Accept-Encoding: identity
Accept-Charset: ISO-8859-1,utf-8,*
206 Partial Content
Content-Type: video/mp4
Connection: keep-alive
Last-Modified: Wed,14 Dec 2011 15:50:59 GMT
ETag: A023EF02BD589BC472A2D6774EAE3C58
Transfer-Encoding:
Content-Length: 63240192
Accept-Ranges: bytes
Server: Brisket/1.0.1
Date: Wed,14 Dec 2011 16:11:25 GMT
Content-Range: bytes 1073152-64313343/64657027
Accept-Ranges: bytes
tiêu đề, nhưng nó cũng gửi xuống độ dài nội dung cho tài nguyên để khách hàng có thể thực hiện các yêu cầu phạm vi với một ràng buộc. Không có gì trong thông báo máy khách cho biết hãy làm điều này theo như tôi biết - máy chủ có thể chọn trả lời "đây là toàn bộ tài nguyên" hoặc "Tôi chấp nhận yêu cầu phạm vi" - một lần nữa là sự tồn tại của Accept-Ranges
tiêu đề. Đó là cách hiểu của tôi về nó.