1

Я передаю файлы с помощью веб-дистрибутива CloudFront поверх хранилища S3, содержащего личные файлы (у CloudFront есть доступ к нему). Я использую AWS WAF для проверки, если запрос поступает из моего домена (с заголовком referer), чтобы избежать прямой загрузки аудиофайла с простой копией в его URL. Для воспроизведения аудиофайлов я использую SoundManager2.Мобильная потоковая передача не работает с WAF + CloudFront + S3 (работает на настольных браузерах!)

Проблема: она работает как очарование на настольных браузерах (Chrome, Firefox и Safari), но поток никогда не запускается на мобильных устройствах (тестируется на iOS и Android). Я не могу понять почему.

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

На веб-версии, SoundManager2 посылает этот первый запрос и отменить его:

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

Затем этот запрос идет сразу после того, как выше:

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

На мобильных устройствах, SoundManager2 достигает playing статус в журналах, но теперь воспроизводится музыка. Кто-нибудь понимает, почему поток не запускается на мобильном телефоне ???

ответ

0

В Windows Mobile это сработает.
См объяснение о WAF и HTML5 аудио/видео на некоторых мобильных браузерах здесь:
Preventing Amazon Cloudfront hotlinking

+1

Хотя эта ссылка может ответить на этот вопрос, то лучше включить основные части ответа здесь и предоставить ссылку для справки. Пожалуйста, добавьте контекст вокруг ссылки (http://meta.stackoverflow.com/a/8259/169503), чтобы у ваших коллег было некоторое представление о том, что это такое и почему оно есть. Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. –

 Смежные вопросы

  • Нет связанных вопросов^_^