I have nearly 20 hours investigating this issue over the past couple days, reading every thread I can find, trying every trick I know, and combing through endless lines of code. The good news is that I know a lot more about the inner workings and how everything should work. The bad news… I still can’t figure out why this doesn’t!
I looked over what you have in the KB. My AWS S3 setup with S2M is correct. I have image files on S3 that are being pulled without any issue. The data being sent in looks to be formatted correctly too (I am using raw tags around the shortcode). Time was also checked and it is spot on.
So here is where I am at now.
The streamer being passed is:
http://s2member-files.ironphoenix.com.s3.amazonaws.com
That seems to be correct.
The file parameters being passed:
video.mp4?response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0&response-content-disposition=inline%3B+filename%3D%22video.mp4%22&response-content-type=video%2Fmp4&response-expires=Wed%2C+29+Aug+2012+12%3A06%3A57+GMT&AWSAccessKeyId=AKIAJUGZWAXN3UU5RHZQ&Expires=1346846847&Signature=3maPR57s26phz1IHnYybUZ0fGQ4%3D
This also looks correct. Here it is again with each parameter broken out for readability:
video.mp4
response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0
response-content-disposition=inline%3B+filename%3D%22video.mp4%22
response-content-type=video%2Fmp4
response-expires=Wed%2C+29+Aug+2012+12%3A06%3A57+GMT
AWSAccessKeyId=AKIAJUGZWAXN3UU5RHZQ
Expires=1346846847
Signature=3maPR57s26phz1IHnYybUZ0fGQ4%3D
Next step was to look at the request & response headers to see what was actually being sent vs what was being passed to JW Player.
Request URL
http://s2member-files.ironphoenix.com.s3.amazonaws.com/?file=video.mp4?response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0&response-content-disposition=inline%3B+filename%3D%22video.mp4%22&response-content-type=video%2Fmp4&response-expires=Wed%2C+29+Aug+2012+12%3A06%3A57+GMT&AWSAccessKeyId=AKIAJUGZWAXN3UU5RHZQ&Expires=1346846847&Signature=3maPR57s26phz1IHnYybUZ0fGQ4%3D&start=0
Request Method
GET
Status Code
403 Forbidden (from cache)
Request Headers
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:s2member-files.ironphoenix.com.s3.amazonaws.com
Referer:http://ironphoenix.com/jwplayer/player.swf
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2
Query String Parameters
file:video.mp4
Response Headers
Connection:Keep-Alive
Content-Type:application/xml
Date:Wed, 05 Sep 2012 12:07:10 GMT
Server:AmazonS3
Transfer-Encoding:chunked
x-amz-id-2:kjsYZtuGrTk6YCp1IzHP2ZD2s9kOdAPF1AZrE8Cdro4/D93gFw9U51ngMOLDvVD/
x-amz-request-id:26B8CABB517453BB
So a couple of things jumped out at me. Main one was the request URL. If you look just past the domain you get the following:
/?file=video.mp4?
I’m not sure if the “?file=” is meant to be part of the URL and thus unable to find a file and throwing a 403 error. Does anyone else see the same in their request URL?