2011-11-28 11 views
82

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

+2

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

Trả lời

128

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 
+7

Đầ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

+7

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

+2

@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. –