Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在Flash/Actionscript中检测到重定向?_Apache Flex_Flash_Actionscript 3_Http_Redirect - Fatal编程技术网

Apache flex 在Flash/Actionscript中检测到重定向?

Apache flex 在Flash/Actionscript中检测到重定向?,apache-flex,flash,actionscript-3,http,redirect,Apache Flex,Flash,Actionscript 3,Http,Redirect,我有一个flash视频播放器,它从中央服务器请求flv文件。如果可能的话,该服务器可能会将请求从用户所在国家重定向到服务器,这与CDN非常相似 该视频播放器还报告使用情况统计数据。我想报告的一件事是播放机播放视频的真实服务器/位置。所以基本上,如果它被重定向,我想知道它 似乎您无法从urloader中提取url,您只能保留构建它的URLRequest的副本 我注意到,您可以侦听HTTP状态事件,其中包括302或类似事件。但不幸的是,HTTPStatusEvent对象没有显示重定向的位置 有没有关

我有一个flash视频播放器,它从中央服务器请求flv文件。如果可能的话,该服务器可能会将请求从用户所在国家重定向到服务器,这与CDN非常相似

该视频播放器还报告使用情况统计数据。我想报告的一件事是播放机播放视频的真实服务器/位置。所以基本上,如果它被重定向,我想知道它

似乎您无法从
urloader
中提取url,您只能保留构建它的
URLRequest
的副本

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


有没有关于如何监视重定向并获取重定向位置的想法?

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

他的文章特别谈到了由于数据来自不可信的服务器而导致某些操作失败而产生的安全问题。由于他不知道自己的视频来自何处(302重定向),Flash播放器不信任它,并阻止对加载内容进行某些操作

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

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社区非常活跃。

嘿嘿!谢谢你的帮助,詹姆斯。这是一种非常肮脏但非常有效的获取服务器的方法。我想我可以试着在视频上画图,如果它抛出了一个安全错误,我可以解析出错误消息以获得重定向的位置。否则我可以假设它没有被重定向。我承认它非常脏,因此你必须决定它是否真的值得。不过,我看不出它有多大的危害——只是要小心,给它一些好的测试。祈祷在未来的Flash播放器中,行为和错误信息格式不会改变…呵呵,是的。因为swf和视频以相同的方式托管在同一个CDN网络上,所以我最终使用了LocalConnection来获取实际(最终)域,从而确保没有跨域请求。var realDomain:String=(新的LocalConnection()).domain;