gpt4 book ai didi

actionscript-3 - "SecurityError: Error #2122"从重定向图像加载内容

转载 作者:行者123 更新时间:2023-12-01 05:18:57 26 4
gpt4 key购买 nike

当从网络加载内容时,这种情况在很多情况下都会发生,但对我们来说,最常见的是通过 Facebook 的图形快捷调用加载图像。

像这样简单的事情:

package
{
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.LoaderContext;

public class RedirectTestFail extends Sprite
{
private const url:String = 'https://graph.facebook.com/4/picture';
private const context:LoaderContext = new LoaderContext(true);

public function RedirectTestFail()
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(this.url), this.context);
}

protected function onComplete(event:Event):void
{
this.addChild((event.target as LoaderInfo).content);
}
}
}

给出一个可怕的“SecurityError: Error #2122”错误。

最佳答案

尽管其他答案暗示了一些简单的事情:

Security.loadPolicyFile("https://fbcdn-profile-a.akamaihd.net/crossdomain.xml");

这不是很清楚,也不够全面。 Facebook 有不同的图像服务器,我以前遇到过。这可能被视为 Flash Player 错误,我会接受,但出于安全考虑,我可以理解他们默认不允许重定向,因为您应该自己处理。

我现在在下面使用。您尝试执行您的正常行为,但将其包装在针对 SecurityError 的 try/catch 中。如果抛出一个,捕获它,如果 loaderInfo 的域与您请求的域不同,则在其上运行“Security.allowDomain”和“Security.loadPolicyFile”,并尝试再次加载它。这在实践中非常有效,只有很少的开销。
package
{
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.system.Security;

public class RedirectTest extends Sprite
{
private const url:String = 'https://graph.facebook.com/4/picture';
private const context:LoaderContext = new LoaderContext(true);

public function RedirectTest()
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(this.url), this.context);
}

protected function onComplete(event:Event):void
{
try
{
this.addChild((event.target as LoaderInfo).content);
}
catch(error:SecurityError)
{
trace(error);
var loaderInfo:LoaderInfo = (event.target as LoaderInfo);
var loaderDomain:String = loaderInfo.loader.contentLoaderInfo.url;
if(-1 == this.url.indexOf(loaderDomain))
{
Security.loadPolicyFile(loaderDomain + 'crossdomain.xml');
if( 0 == loaderDomain.indexOf('https') )
{
Security.allowDomain(loaderDomain);
}
else
{
Security.allowInsecureDomain(loaderDomain)
}

loaderInfo.loader.load(new URLRequest(this.url), this.context);
return;
}
throw error;
}
}
}
}

关于actionscript-3 - "SecurityError: Error #2122"从重定向图像加载内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17900180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com