我有這樣的代碼,應該從遠程服務器拉縮圖像,並將其返回到Flex中顯示。不幸的是我的代碼拋出了「沒有活動的安全上下文」錯誤。即使使用setTimeout技巧,「沒有活動的安全上下文」錯誤?
搜索後,我看到一個setTimeout的技巧,它應該解決這個問題,但它不適用於我。我究竟做錯了什麼?
這裏是代碼在Flex的4.0(注:文件是一個自定義類)
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;
setTimeout(
function():void {
loader.load(req);
}, 1);
// set load handler
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(event:Event):void
{
var thumbnail:Image = new Image();
thumbnail.source = event.currentTarget.content;
callBack(thumbnail);
});
}
}
更新我把這個在我的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>
我仍然得到「沒有活動的安全上下文」的錯誤在Firefox的Flash Player的調試版本。
爲我工作 - 做Flex時,總是會出現這些不起眼的錯誤信息,grrrrh! – SteveD 2011-09-22 12:37:51