1

Ich streame Dateien mit einer CloudFront-Webdistribution über einen S3-Speicher mit privaten Dateien (CloudFront hat Zugriff darauf). Ich verwende AWS WAF, um zu überprüfen, ob die Anfrage von meiner Domain kommt (mit dem Header referer), um den direkten Download der Audiodatei durch einfaches Kopieren und Einfügen ihrer URL zu vermeiden. Um die Audiodateien abzuspielen, verwende ich SoundManager2.Mobile Streaming funktioniert nicht mit WAF + CloudFront + S3 (funktioniert auf Desktop-Browsern!)

Das Problem: Es funktioniert wie ein Charme auf Desktop-Browsern (Chrome, Firefox und Safari), aber der Stream nie auf dem Handy spielen (getestet auf iOS und Android). Ich kann nicht verstehen warum.

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

Auf der Web-Version sendet SoundManager2 diese erste Anforderung und abbrechen:

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

Dann geht dieser Antrag direkt nach dem oben:

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

Auf mobilen, SoundManager2 die erreicht playing Status in den Protokollen, aber jetzt wird Musik abgespielt. Bekommt jemand, warum der Stream nicht auf Handy startet ???

Antwort

0

Unter Windows Mobile würde dies funktionieren.
Siehe Erklärung über WAF und HTML5 Audio/Video auf einigen mobilen Browsern hier:
Preventing Amazon Cloudfront hotlinking

+1

Während dieser Link, um die Frage beantworten kann, es besser ist, die die wesentlichen Teile der Antwort hier und geben Sie den Link als Referenz enthalten. Bitte [fügen Sie einen Kontext um den Link hinzu] (http://meta.stackoverflow.com/a/8259/169503), damit Ihre Mitbenutzer eine Idee haben, was es ist und warum es da ist. Zitiere immer den relevantesten Teil eines wichtigen Links, falls die Zielseite nicht erreichbar ist oder permanent offline geschaltet wird. –