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 데이터를 가져올 때 URL이 http://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 |