我有点惊讶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社区非常活跃。
嘿嘿!谢谢你的帮助,詹姆斯。这是一个非常肮脏,但非常有效的方式来获得服务器。我想我可以尝试在视频上绘图,如果它引发SecurityError,我可以解析出错误消息以获取重定向位置。否则,我可以认为它没有重定向。 – aaaidan 2009-09-02 03:30:31
我承认这是非常肮脏的,因此你必须做出是否真的值得的决定。虽然我看不出太多伤害 - 只是要小心并给它一些好的测试。并祈祷行为和错误消息格式不会在未来的Flash Player中更改... – 2009-09-02 04:48:09
嘿,是的。 由于swf和视频在同一CDN网络上以相同方式托管,因此我最终使用LocalConnection来获取实际(最终)域,从而确保没有跨域请求。 var realDomain:String =(new LocalConnection())。domain; – aaaidan 2009-09-16 01:51:32