检测Flash / Actionscript中的重定向?

时间:2009-09-02 02:59:27

标签: flex flash actionscript-3 http redirect

我有一个flash视频播放器,它从中央服务器请求一个flv文件。如果可能,该服务器可能会将请求重定向到用户所在国家/地区的服务器,就像CDN一样。

此视频播放器还会报告使用情况统计信息。我想报告的一件事是播放器从中流式传输视频的真实服务器/位置。所以基本上,如果它被重定向,我想知道它。

您似乎无法从URLLoader中提取网址,只能保留您构建网址的URLRequest的副本。

我注意到您可以侦听HTTP状态事件,其中包括302或类似事件。但遗憾的是,HTTPStatusEvent对象未显示重定向的位置。

有关如何监控重定向并获取重定向位置的任何想法?

1 个答案:

答案 0 :(得分:3)

我有点惊讶Flash允许您重定向视频请求。我做了一些挖掘,看起来你可以获得信息:

Handling Crossdomain.xml and 302 Redirects Using NetStream

他的帖子专门讨论了安全问题的麻烦,因为如果数据来自不受信任的服务器,某些操作会失败。由于他不知道他的视频来自何处(302重定向),因此Flash Player不信任它并阻止对加载的内容进行某些操作。

如何获取实际加载内容的服务器是对不应该允许的文件执行操作,并从错误消息中解析域信息:

try
{
    var bit:BitmapData = new BitmapData(progressiveVideoPlayer.measuredWidth, progressiveVideoPlayer.measuredHeight, false, 0x000000);
    bit.draw(progressiveVideoPlayer);
}
catch(error:SecurityError)
{
    var list:Array = error.toString().split(" ");
    var swfURL:String = list[7] as String;
    var domain:String = list[10] as String;
    domain = domain.substring(0, domain.length - 1);
    var domainList:Array = domain.split("/");
    var protocol:String = domainList[0] as String;
    var address:String = domainList[2];
    var policyFileURL:String = protocol + "//" + address + "/crossdomain.xml";
    Security.loadPolicyFile(policyFileURL);
}

注意他正在这样做,以便他可以加载策略文件(以允许对文件进行安全性限制操作)。我不确定它对你有帮助,但至少阅读这篇文章并考虑一下。您也可以直接与博客作者联系 - 他在普通的Flash社区非常活跃。