1

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

Répondre

0

Sur Windows Mobile, cela fonctionnerait.
Voir explication sur WAF et audio/vidéo HTML5 sur certains navigateurs mobiles ici:
Preventing Amazon Cloudfront hotlinking

+1

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