Je reçois donc cette erreur lors de la lecture de certaines vidéos. Lorsque Chrome télécharge complètement la vidéo, il arrête de jouer avec cette erreur. De plus, le statut de la demande passe de 206 à (échec), puis Chrome envoie d'autres demandes avec Range:bytes=2990775-
et la réponse du serveur est:ERR_CONTENT_LENGTH_MISMATCH lors du chargement de la vidéo en chrome
Accept-Ranges:bytes
Cache-Control:private
Connection:keep-alive
Content-Disposition:attachment; filename="About The Author.mp4"
Content-Length:0
Content-Range:bytes 2990775-2990775/2990776
Content-Transfer-Encoding:binary
Content-Type:video/mp4
Date:Tue, 14 Feb 2017 13:46:24 GMT
Last-Modified:Wed, 08 Feb 2017 05:43:27 GMT
Pragma:public
Server:Apache/2
Vary:User-Agent
X-Powered-By:PHP/5.4.45
J'ai un autre site sur le même serveur et il fonctionne très bien là-bas.
Voici mon code PHP:
$filesize = filesize($resource->path);
$matches = explode("-", substr($_SERVER['HTTP_RANGE'],6));
if (empty($matches[1]))
{
$matches[1] = $filesize - 1;
}
$offset = intval($matches[0]);
$length = intval($matches[1]) - $offset;
$file = fopen($resource->path, 'r');
fseek($file, $offset);
$data = fread($file, $length);
fclose($file);
header('HTTP/1.1 206 Partial Content');
header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
header('Pragma: public');
header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($resource->path)).' GMT');
header('Cache-Control: private',false);
header('Content-Type: ' . $mime);
header('Content-Length: ' . ($length + 1));
header('Content-Disposition: attachment; filename="' . $resource->filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
print($data);
Désolé pour mon mauvais anglais.
J'ai un problème similaire avec Flask. –