본문 바로가기

위기관리

크로스도메인 연동 작업시 주의사항


현재 서버에서 사용하고 있는 플래시 SWF파일과 XML파일이 서로 다른 서버에 위치하게 되면, SWF 파일이 XML파일을 호출할 수 없게 된다. 이때 '크로스도메인 정책파일( crossdomain.xml )'을 설정해주면 해당 XML 파일을 호출할 수 있게 된다. 

- 외부서버 데이터 갖어오기 해결방법

 //xml 데이터가 위치한 서버에서 해야할 일 -------------------------
XML이 있는 서버 루트폴더에 crossdomain.xml 파일을 올리게 되면, 플래시 파일이 자동으로 해당 '크로스도메인 정책파일'을 읽어서 엑세스를 허용해 준다.

      - crossdomain.xml 내용

     <?xml version="1.0" encoding="UTF-8" ?>
     <cross-domain-policy>
         <allow-access-from domain="*.yourdomain.com" to-ports="*" />
     </cross-domain-policy>

     allow-access-from domain : 허용도메인
     to-port                              : 허용할 포트

 

//플래시 파일에서 처리해줘야할 일 ------------------------
기본적으로 Flash Player는 데이터 로드 요청이 발생한 대상 서버의 루트에서 /crossdomain.xml에서만 정책 파일을 찾습니다. 

위 말처럼 플래시에서 외부서버를 호출할때 기본적으로 해당 서버루터에 crossdomain.xml파일이 있는지 없는지 자동으로 검사를 하기 때문에 궂이 별도 처리할 필요는 없지만 명시적으로  처리하고 싶다면...

      Security.loadPolicyFile(
http://www.example.com/crossdomain.xml );

다음 예제와 같이 Security.loadPolicyFile()
을 사용하면 Flash Player에서 임의의 위치에 있는 정책 파일을 로드할 수 있습니다.

      Security.loadPolicyFile(
http://www.example.com/sub/dir/crossdomain.xml );

 위와 같이 설정하면
http://www.example.com/sub/dir/ 내부 디렉토리에 있는 데이터접근만 허용됩니다.


- 외부서버 플래시와 통신이 필요한 경우 해결방법

지정된 도메인의 SWF 파일과 HTML 파일이 allowDomain() 호출을 포함하는 SWF 파일의 객체 및 변수에 액세스할 수 있도록 합니다. 

      
Security.allowDomain("허용도메인");

 
더 자세한 추가내용은 레퍼런스 Security 클래스 참고.