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-Rangestiê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-Rangetiê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: bytestiê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-Rangestiêu đề. Đó là cách hiểu của tôi về nó.