2017-03-09 54 views
0

以下flex代碼將圖像控件源設置爲「https程序調用」以將圖像文件和克隆圖像數據轉換爲位圖,然後將其添加爲子項的圖像瀏覽器:將Adobe Flex圖像控件源設置爲https程序調用失敗(SecurityError:Error#2122)

<ns1:ImageViewer id="imageViewer" bitmapScaleFactorMax="5" bitmapScaleFactorMin=".05"width="100%" height="100%" x="0" y="0" /> 
    <mx:Image id="navImage" source="{_imageURL}" complete="{loadOK()}" /> 

    private function loadOK():void 
    { 
     Alert.show("load ok"); 
     try { 
     preImageData = (navImage.content as Bitmap).bitmapData.clone(); 
     Alert.show("clone ok"); 
     } catch (err:Error) { 
     Alert.show"error="+err); 
     } 
     preImage = new Bitmap(preImageData); 
     Alert.show("bitmap ok"); 
     preImage.scaleX /= scaleRatio; 
     preImage.scaleY /= scaleRatio; 
     imageViewer.addChildAt(preImage, 0); 
     Alert.show("cloned navImage add to imageBiewer ok"); 
     // some further codes 
    } 
    public function appStart():void 
    { 
     _imageURL = "https://fs.mysite.com/getimgurl.jsp?pic=logo"; 
    } 

https://fs.mysite.com/getimgurl.jsp?pic=logo」實際上返回一個字符串「https://fs.mysite.com/img/mylogo.jpg」。

我對ap.mysite.com設置政策的crossdomain.xml:

<allow-access-from domain="ap.mysite.com" secure="false" /> 

在ap.mysite.com,我寫一個jsp,包括這個SWF,只有在瀏覽器中運行它,它顯示「load ok」,但永遠不會「clone ok」,並且異常顯示「error = SecurityError:Error#2122」。如果我直接設置_imageURL = https://fs.mysite.com/img/mylogo.jpg,則會顯示「clone ok」。

我認爲問題是圖像控制源不接受程序調用,但是當我將https更改爲該程序調用字符串的http時,它工作正常。

有些人告訴我關於「loadPolicyFile」和「allowDomain」,但我不知道他們。我做錯了什麼,或者我錯過了什麼?

回答

1

添加以下代碼,它會工作

Security.loadPolicyFile("yoursite/crossdomain.xml"); 
+0

它的工作。我可以知道爲什麼嗎? –

+0

您已在您的網站中使用crossdomain.xml。但是flex不知道在哪裏查找策略文件,以便它可以讀取它以確定是否允許應用程序從除自己以外的服務器加載數據。所以我們必須指示他們使用'loadPolicyFile'加載策略文件 – Jeffin

相關問題