Apache flex &引用;“无活动安全上下文”;即使使用setTimeout技巧也会出错?

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

我有一段代码,它应该从远程服务器中提取一个缩略图图像,并将其返回到Flex中显示。不幸的是,我的代码抛出了“无活动安全上下文”错误

搜索之后,我看到了一个setTimeout技巧,它应该可以解决这个问题,但它对我不起作用。我做错了什么

以下是Flex4.0中的代码(注意:File是一个自定义类)

更新我把它放在我的application.mxml中

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时,总是会出现这些模糊的错误消息!