HTML 5 видео Частичное содержимое и err_connection_reset - PullRequest
0 голосов
/ 02 ноября 2018

Я загружаю HTML5-видео из Javascript и мне любопытно, как в Chrome.

Когда я загружаю видео, я вижу 4 разных запроса, так как я использую частичные загрузки. Все запросы 1, 2 и 4 выглядят корректными, битовый запрос 3 завершается неудачно с помощью net :: ERR_CONNECTION_RESET 206 (частичное содержимое).

Мой код для загрузки видео выглядит так:

const filename = '<some url on AWS S3>';
let vid = document.getElementById('video');
video.setAttribute('src', filename);
video.onerror = function (event) {
  handleError(event, 0, 0, streamData);
};
video.setAttribute('crossorigin', 'anonymous');

Запросы и ответы таковы:

Запрос № 1:

Request URL: https://xxx.s3.amazonaws.com/videos/20180816.mp4?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XXXXX%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20181101T200929Z&X-Amz-SignedHeaders=host&X-Amz-Expires=7200&X-Amz-Signature=XXXX
Request Method: GET
Status Code: 206 Partial Content
Remote Address: 52.216.169.19:443
Referrer Policy: no-referrer-when-downgrade

Ответ № 1:

Accept-Ranges: bytes
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin: *
Content-Length: 144276001
Content-Range: bytes 0-144276000/144276001
Content-Type: video/mp4
Date: Thu, 01 Nov 2018 20:09:31 GMT
ETag: "084e2d8fd0986b80d8be431fee276a52-9"
Last-Modified: Thu, 01 Nov 2018 20:01:27 GMT
Server: AmazonS3
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
x-amz-id-2: iIKndrRGB7Ov+c9w2M8gCFlGP3kiUIj3jv189N1o+uZUdIoqMlPL3yXHjWirmA3WZJod+t4NkX8=
x-amz-meta-content-duration: 1425
x-amz-request-id: BD4FBA30398AB1D7
x-amz-server-side-encryption: AES256

Заголовок запроса № 1:

Accept-Encoding: identity;q=1, *;q=0
chrome-proxy: frfr
Origin: https://mysite.test
Range: bytes=0-
Referer: https://mysite.test/showvideo/18
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

Запрос № 2: выглядит так же, как запрос № 1, но с другой длиной и диапазоном содержимого:

Content-Length: 293409
Content-Range: bytes 143982592-144276000/144276001

Запрос №2 Заголовки запроса Chrome-прокси отсутствует, а диапазон составляет

Range: bytes=143982592-

Запрос № 3 отличается и всегда терпит неудачу:

Запрос № 3:

Request URL: https://xxx.s3.amazonaws.com/videos/20180816.mp4?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XXXXX%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20181101T200929Z&X-Amz-SignedHeaders=host&X-Amz-Expires=7200&X-Amz-Signature=XXXX
Referrer Policy: no-referrer-when-downgrade

* Запрос № 3 Заголовки: " Аналогично запросу № 2, кроме:

Range: bytes=32768-

Наконец, запрос № 4 выглядит так же, как запрос № 2 с разными диапазонами байтов.

Что здесь происходит? Почему 3-й запрос всегда будет сбой при сбросе соединения в Chrome?

Я просто быстро проверил, и Firefox не демонстрирует такое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...