2010-02-19 65 views
1

我正在使用Flex 3(ActionScript 3.0)。我使用HTTP渐进式下载来播放声音文件。我想保护声音文件,只有当请求来自我的Flex应用程序时才提供声音文件。我选择了将最简单的解决方案添加到从应用程序发送的每个请求中。但flash.media.Sound对象会忽略flash.net.URLRequest中设置的标头。以下是一个示例,flash.media.Sound不发送HTTP请求标题

URLRequest sndFile = new URLRequest("http://blah.com/media/load_sound.php"); 
sndFile.requestHeaders = new Array(new URLRequestHeader("req-orgin", "myflexapp")); 
Sound snd = new Sound(sndFile); 
snd.play(); 

req-origin的值在load_sound.php中为null。当我使用Firebug检查请求时,http://blah.com/media/load_sound.php的请求标题不包含标题。

有人知道为什么标题被忽略吗?有没有其他方法来确定请求来自我的Flex应用程序?

谢谢

回答

1

出于安全原因,Flash播放器确实限制了标头支持。我相信自定义标头只支持POST请求。有各种各样的限制。

你可以在这里看到更多的信息:http://kb2.adobe.com/cps/403/kb403030.html

在这里:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/URLRequestHeader.html

跨域策略文件应该可以解决任何问题,不过,看这里:

http://kb2.adobe.com/cps/403/kb403184.html

古德勒克! (你可能需要它)