본문 바로가기

X-INERNET/FLEX/ActionScript

Flex3의 HttpService 데이터 연동 시 crossdomain.xml 지정

Flex3.0을 이용하여 HTTPService 데이터 연동 시 Data Access Exception

 

Flex3에서 데이터 연동 방법

데이터 연동방법

데이터 포맷

처리 어플리케이션

FDS2 사용

실시간 메시징

RPC

HTTPService

XML

XML, ASP, JSP, PHP, CFML등 모든 웹 프로그램

optional

NO

WebService

XML SOAP 메세지

WEB 서비스 제공 시스템

optional

NO

RemoteObject

Java object(List Map)

자바빈즈 클래스

required

NO

FDS

Message Service

Java object(List Map)

자바빈즈 클래스

required

YES

Data Management Service

Java object(List Map)

자바빈즈 클래스

required

YES

 

HTTPService 데이터 연동 방법은 XML을 지원하는 모든 웹 프로그램에서 가능하다.

XML 데이터만 받아오면 무엇이든 가능하다.

 

주의 할 것은

자신의 로컬서버에 있는 swf 파일에서 다른 서버에 있는 리모트 데이터(XML)을 가져오려할 때 보안문제가 발생한다.

리모트 데이터 접근이 불가능하다.

 

http://aaa.bbb.com/test.html(swf)로 접속 후 XML 데이터를 가져올 때 URLhttp://aaa.bbb.com/data.jsp에서 작성된 XML이라면

동일한 로컬 데이터로 문제가 발생하지 않는다.

 

http://xxx.yyy.com/test.html(swf)로 접속 후 http://aaa.bbb.com/data.jsp를 호출 시 아래와 같은 예외가 발생한다.

[RPC Fault faultString="Security error accessing url" faultCode="Channel.Security.Error" faultDetail="Destination: DefaultHTTP"]

 

리모트 서버의 접근을 허용하려면 crossdomain.xml 접근하는 리모트 서버를 등록해야한다.

crossdomain.xml은 웹 서비스 루트 디렉토리에 작성한다. 이전 버전과 바뀌었다.

 

aaa.bbb.com에서

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
<cross-domain-policy>
    <site-control permitted-cross-domain-policies="all"/>

    <allow-access-from domain="xxx.yyy.com" />
</cross-domain-policy>

 

<allow-access-from domain="허용할 도메인주소" to-ports="허용할 포트번호" />

domain="*"              : 모두 허용

domain="*.bbb.com" : bbb.com의 모든 호스트에서 접근을 허용

 

'X-INERNET > FLEX/ActionScript' 카테고리의 다른 글

Flex Ref_Site  (0) 2009.10.18
BlazeDS 설치  (0) 2009.10.18