Flash not finding crossdomain.xml (Amazon S3)

amazon ec2amazon s3crossdomain.xmlflash

I have a flash app hosted at www.example.com that is trying to pull in assets from my Amazon S3 bucket at http://s3.example.com

I have a crossdomain.xml file that is world-readable at the root level of the bucket. s3.example.com/crossdomain.xml

The contents of that crossdomain.xml file are as follows:

    <?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <allow-access-from domain="*.example.com" />  
    <allow-http-request-headers-from domain="*.example.com" headers="*" />                        
</cross-domain-policy>    

When I run my app from www.example.com it will not load the resources from my s3 bucket. After some request sniffing via wireshark and httpfox it appears the flash app is not requesting the s3.example.com/crossdomain.xml at any point.

Any ideas why its skipping over this file? I shouldn't need to force it to look there right by using this: Security.loadPolicyFile("http://s3.example.com/crossdomain.xml"); ??

Thanks,
Brian

Best Answer

What's your AS2 code, and what kind of content are you trying to load? If possible, what's the actual URL you're trying to load?

You may need to force the crossdomain loading, like setting NetStream.checkPolicyFile (AS2, AS3) to true if you're trying to load a video.

One other error you may be running into is when the target server is redirecting you to another URL (via 301 redirect) - pretty common with images from some load-balanced services (say, Facebook). When that happens, Flash does not check the policy file after the redirect - in that case, yeah, you have to do a loadPolicyFile() yourself. You only need to do it once, though, preferably during your application initialization (it only queues the cross domain loading, letting Flash know it's ok to load that whenever it's needed).

Related Topic