我有一个flash视频播放器,它从中央服务器请求一个flv文件。如果可能,该服务器可能会将请求重定向到用户所在国家/地区的服务器,就像CDN一样。
此视频播放器还会报告使用情况统计信息。我想报告的一件事是播放器从中流式传输视频的真实服务器/位置。所以基本上,如果它被重定向,我想知道它。
您似乎无法从URLLoader
中提取网址,只能保留您构建网址的URLRequest
的副本。
我注意到您可以侦听HTTP状态事件,其中包括302或类似事件。但遗憾的是,HTTPStatusEvent
对象未显示重定向的位置。
有关如何监控重定向并获取重定向位置的任何想法?
答案 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社区非常活跃。