Я загружаю 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 не демонстрирует такое поведение.