Apache flex &引用;“无活动安全上下文”;即使使用setTimeout技巧也会出错?
我有一段代码,它应该从远程服务器中提取一个缩略图图像,并将其返回到Flex中显示。不幸的是,我的代码抛出了“无活动安全上下文”错误 搜索之后,我看到了一个setTimeout技巧,它应该可以解决这个问题,但它对我不起作用。我做错了什么 以下是Flex4.0中的代码(注意:File是一个自定义类) 更新我把它放在我的application.mxml中Apache flex &引用;“无活动安全上下文”;即使使用setTimeout技巧也会出错?,apache-flex,actionscript-3,flex4,Apache Flex,Actionscript 3,Flex4,我有一段代码,它应该从远程服务器中提取一个缩略图图像,并将其返回到Flex中显示。不幸的是,我的代码抛出了“无活动安全上下文”错误 搜索之后,我看到了一个setTimeout技巧,它应该可以解决这个问题,但它对我不起作用。我做错了什么 以下是Flex4.0中的代码(注意:File是一个自定义类) 更新我把它放在我的application.mxml中 Security.allowDomain("*"); Security.allowInsecureDomain("*"); Security.loa
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://localhost:8080/crossdomain.xml");
我将动作脚本文件中的代码修改为
public function getThumbnail(file:File, callBack:Function):void
{
// only for image files
if (file.mimeType.indexOf("image") > -1) {
var loader:Loader = new Loader();
// create request
var urlVars:URLVariables = new URLVariables();
urlVars.id = file.id;
var req:URLRequest = new URLRequest(THUMBNAIL_URL);
req.data = urlVars;
var context:LoaderContext = new LoaderContext(true);
loader.load(req);
// set load handler
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(event:Event):void
{
var thumbnail:Image = new Image();
thumbnail.source = event.currentTarget.content;
callBack(thumbnail);
});
}
}
我必须修改J2EE后端上的server.xml,以使crossdomain.xml显示在根目录下
我的crossdomain.xml如下所示:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<!--This domain can accept the SOAPAction header from a SWF file from www.example.com -->
<site-control permitted-cross-domain-policies="all" />
<allow-access-from domain="*" secure="false" />
<allow-http-request-headers-from
domain="*" headers="SOAPAction" />
</cross-domain-policy>
使用Flash Player的调试版本,我仍然会在Firefox中遇到“无活动安全上下文”错误。这可能很简单,只需从正在提取缩略图的网站加载跨域策略即可
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://domain.com/crossdomain.xml");
它可能很简单,只需从您正在提取缩略图的网站加载跨域策略
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://domain.com/crossdomain.xml");
如果我没记错的话(安全策略在Flash中有点麻烦),加载程序类在加载图像时不会检查跨域策略文件。您可以通过将自己的实例传递给loader.load()
,来指示它这样做,例如:
loader.load(urlRequest, new LoaderContext(true));
我认为您不需要在代码中使用setTimeout
;我没有听说过这种做法,也不确定它会实现什么(除了将加载调用延迟1毫秒:)如果我没记错(安全策略在Flash中有点泥潭),加载程序类在加载图像时不会检查跨域策略文件。您可以通过将自己的实例传递给loader.load()
,来指示它这样做,例如:
loader.load(urlRequest, new LoaderContext(true));
我认为您不需要在代码中使用
setTimeout
;我没有听说过这种做法,也不确定它会实现什么效果(除了将加载调用延迟1毫秒:)我再也找不到链接了,但是10.2版的Flash在调试时出现了一个bug。我最近用调试器升级到了10.3版,不再出现这个错误。我再也找不到链接了,但是10.2版的Flash带有调试时出现了一个错误。最近,我用调试器升级到10.3版,不再出现此错误。我在某处看到此错误,并将其添加到我的代码中,但它没有修复此错误。我在某处看到此错误,并将其添加到我的代码中,但它没有修复此错误。谢谢,我也尝试过此操作,但它告诉我“错误:由于元策略“仅限主策略”,因此在忽略策略文件。”,在一个实际的域(而不是本地主机)上尝试一下,看看是否有效。好的,所以我最终解决了crossdomain.xml的问题。我不得不更改server.xml的配置,这样我的应用程序就会显示在localhost:8080/上,这样crossdomain.xml就会出现在根目录下。不幸的是,我仍然有相同的“No active SerSecurity context”错误。谢谢,我也尝试过这个错误,但它告诉我“错误:由于元策略“仅限master”而忽略处的策略文件”。奇怪的是,在实际域(而非本地主机)上尝试一下,看看是否有效。好的,因此我最终解决了crossdomain.xml的问题。我不得不更改server.xml的配置,这样我的应用程序就会显示在localhost:8080/上,这样crossdomain.xml就会出现在根目录下。不幸的是,我仍然有相同的“无活动安全上下文”错误。对我来说很有用-在执行Flex、grrrrh时总是这些模糊的错误消息!为我工作-在执行Flex、grrrrh时,总是会出现这些模糊的错误消息!