Có thể hiển thị cho tôi phiên http mẫu với các yêu cầu phạm vi không. Tôi có nghĩa là yêu cầu và tiêu đề phản hồi là gì?Phiên yêu cầu phạm vi http mẫu
Trả lời
Trao đổi sau đây giữa Chrome và máy chủ web tĩnh, truy xuất video MP4.
Yêu cầu ban đầu - cho video. Chú ý tiêu đề Accept-Ranges
phản ứng để chỉ ra máy chủ có hỗ trợ tiêu đề khoảng:
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
tiêu đề cấp ở phản ứng trước phát hiện - yêu cầu tiếp theo với phạm vi mở để xác nhận hỗ trợ. Phản ứng trả về một 206 tình trạng và Content-Range
tiêu đề để chỉ ra byte hiện diện trong cơ thể phản ứng: (siêu dữ liệu có thể để nắm bắt trailing)
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 phạm vi tiếp theo để nắm bắt sự kết thúc của file:
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 phát hành để 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
Đầu đề Chuyển mã hóa trống là một vật phẩm của cách giao tiếp HTTP đã bị bắt hoặc có một máy chủ HTTP thực sự ở đó tạo ra các giá trị trống cho tiêu đề này không? – swl10
Trong trường hợp đầu tiên, có vẻ như máy chủ đang trả lại 64657027 byte nội dung. Vì vậy, những gì đang xảy ra - là khách hàng chỉ cần ném đi nội dung đó, và sau đó phát hành một yêu cầu phạm vi cho các bộ phận thực sự muốn? Hoặc là máy chủ không trả lại bất kỳ nội dung nào vì có gì đó trong thông điệp của khách hàng nói không làm điều đó. Nếu vậy, nó là cái gì? – Morrie
@Morrie - nó có vẻ giống như máy chủ, biết rằng chính nó hỗ trợ yêu cầu phạm vi, nói với khách hàng "Tôi chấp nhận yêu cầu phạm vi" thông qua tiêu đề 'Accept-Ranges: bytes', nhưng nó cũng sẽ gửi độ dài nội dung cho tài nguyên để client có thể thực hiện các yêu cầu phạm vi với một giới hạn trên. Không có gì trong thông điệp khách hàng nói đ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 tiêu đề 'Chấp nhận-Ranges' . Đó là sự hiểu biết của tôi về nó anyway. –
Cách đây vài tháng phiên bản tiêu chuẩn HTTP/1.1 đã được xuất bản. Nó có một RFC đặc biệt cho các yêu cầu phạm vi, điều này dễ đọc hơn so với thông số cũ, bao gồm các ví dụ cho nhiều mục: https://tools.ietf.org/html/rfc7233 – Thirler