2017-03-09 6 views
0

다음 flex 코드는 이미지 파일을 가져 와서 비트 맵에 이미지 데이터를 복제하기 위해 이미지 컨트롤 소스를 'https 프로그램 호출'로 설정 한 다음 다른 이미지 뷰어에 자식으로 추가 :https 프로그램 호출로 설정된 Adobe Flex 이미지 컨트롤 소스가 실패합니다 (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 파일에서 정책을 설정 한

는 :

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

,이 SWF를 포함 만, 브라우저를 실행하기 위해 JSP로 쓰기 "load ok"를 표시하지만 "ok clone"하지 않으며 예외는 "error = SecurityError : Error # 2122"를 표시합니다. _imageURL = https://fs.mysite.com/img/mylogo.jpg을 직접 설정하면 "clone ok"가 표시됩니다.

이미지 제어 소스가 프로그램 호출을 허용하지 않지만 해당 프로그램 호출 문자열의 https를 https로 변경하면 문제가 없다고 생각했습니다.

일부 사람들은 "loadPolicyFile"및 "allowDomain"에 대해 알려주지 만 일부는 알지 못합니다. 나는 무엇을 잘못 했는가, 무엇을 놓칠까요?

답변

1

다음 코드를 추가하고 그것은 일

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

작동합니다. 왜 그런지 알 겠어? –

+0

귀하의 사이트에서 crossdomain.xml을 (를) 사용하셨습니다. 그러나 flex는 정책 파일을 어디에서 찾을 수 있는지 알지 못하므로 응용 프로그램이 자체 서버 이외의 서버에서 데이터를로드 할 수 있는지 여부를 결정할 수 있습니다. 따라서 우리는'loadPolicyFile'을 사용하여 정책 파일을로드하도록 지시해야합니다. – Jeffin