Je diffuse des fichiers avec une distribution Web CloudFront sur un stockage S3 contenant des fichiers privés (CloudFront y a accès). J'utilise AWS WAF pour valider si la requête provient de mon domaine (avec l'en-tête referer
) pour éviter le téléchargement direct du fichier audio avec un simple copier-coller de son URL. Pour lire les fichiers audio, j'utilise SoundManager2. Le problème: cela fonctionne comme un charme sur les navigateurs de bureau (Chrome, Firefox et Safari), mais le flux ne commence jamais à jouer sur mobile (testé sur iOs et Android). Je ne peux pas comprendre pourquoi.Le streaming mobile ne fonctionne pas avec WAF + CloudFront + S3 (fonctionne sur les navigateurs de bureau!)
**General**
Request URL:https://XXXXXXXXX.cloudfront.net/uploads/track/s3_file/XXXXX/XXXXXXXXXXXX.mp3
Request Method:GET
Status Code:206 Partial Content
Remote Address:XX.XX.XXX.X:XXX
**Response Headers**
Accept-Ranges:bytes
Age:9230
Cache-Control:max-age=31536000
Connection:keep-alive
Content-Length:2
Content-Range:bytes 0-1/4958188
Content-Type:audio/mp3
Date:Wed, 20 Apr 2016 11:35:09 GMT
ETag:"3f90ed8fa62501906107380830996ae9"
Last-Modified:Mon, 18 Apr 2016 15:05:16 GMT
Server:AmazonS3
Via:1.1 70801f007508df9ad04c63e7be99eab2.cloudfront.net (CloudFront)
X-Amz-Cf-Id:e-MSj2EuajyCKG8ah8f5WzjqQxymLfCeGaH5q6AMgt7T42u7wFKGig==
X-Cache:Hit from cloudfront
**Request Headers**
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,fr;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Host:XXXXXXXXXX.cloudfront.net
Pragma:no-cache
Range:bytes=0-1
Referer:http://www.domain.com/this-is-a-playlist/other-lives-tamer-animals
Save-Data:on
User-Agent:Mozilla/5.0 (Linux; Android 5.1.1; A0001 Build/LMY48Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.105 Mobile Safari/537.36
Sur la version web, SoundManager2 envoie cette première demande et l'annuler:
**General**
Request URL:https://XXXXXXXX.cloudfront.net/uploads/track/s3_file/XXX/XXXXXXXXXXXXX.mp3
**Request Headers**
Provisional headers are shown
Accept-Encoding:identity;q=1, *;q=0
Range:bytes=0-
Referer:http://www.domain.com/this-is-a-playlist/other-lives-tamer-animals
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Ensuite, cette demande va juste après ce qui précède:
**General**
Request URL:https://XXXXXXXXXXX.cloudfront.net/uploads/track/s3_file/XXX/XXXXXXXXXX.mp3
Request Method:GET
Status Code:206 Partial Content
Remote Address:XX.XX.XXX.XXX:XXX
**Response Headers**
view source
Accept-Ranges:bytes
Age:168539
Cache-Control:max-age=31536000
Connection:keep-alive
Content-Length:4958188
Content-Range:bytes 0-4958187/4958188
Content-Type:audio/mp3
Date:Mon, 18 Apr 2016 15:35:12 GMT
ETag:"3f90ed8fa62501906107380830996ae9"
Last-Modified:Mon, 18 Apr 2016 15:05:16 GMT
Server:AmazonS3
Via:1.1 c035b03e455c334ee837503784ad41c8.cloudfront.net (CloudFront)
X-Amz-Cf-Id:bE3BNkkvWJ08qwcsRT-3TIvHs6dXT-QIJ8UP6kl3vQVg89LaiO1Npg==
X-Cache:Hit from cloudfront
**Request Headers**
view source
Accept:*/*
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:fr,en-US;q=0.8,en;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Host:XXXXXXXXXXX.cloudfront.net
Pragma:no-cache
Range:bytes=0-
Referer:http://www.domain.com/this-is-a-playlist/other-lives-tamer-animals
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Sur mobile, SoundManager2 atteint la playing
statut dans les journaux, mais maintenant la musique est jouée. Quelqu'un at-il pourquoi le flux ne démarre pas sur mobile ???
Bien que ce lien peut répondre à la question, il est préférable d'inclure les éléments essentiels de la réponse ici et de fournir le lien de référence. S'il vous plaît [ajouter le contexte autour du lien] (http://meta.stackoverflow.com/a/8259/169503) afin que vos autres utilisateurs aient une idée de ce que c'est et pourquoi il est là. Toujours citer la partie la plus pertinente d'un lien important, dans le cas où le site cible est inaccessible ou va définitivement hors ligne. –