swf에서 다른 도메인에 위치한 swf를 로드하는 것이 현제의 Flash Player7.0 이나 Flash Player8.0은 작동되질 않습니다. 5.0에서는 이것이 가능해서 여러가지 장난을 할수가 있었습니다.
하지만 이걸 막기위해서 크로스 도메인을 셋팅하게 된것입니다. 귀찮기는 해도 보안을 위해서는 꼭 필요하지요. 지금 부터 있는 글은 플래시의 HELP에 있는 글입니다. 한번쯤 일어봐 두시면 필요할 때가 올지도 모르겠지요... 글의 내용은 XMLSocket을 연결을 위한 내용이지만 도메인이 다를때 swf를 로드할때에도 공통 적용이 됩니다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
XMLSocket 연결을 위해 Flash Player 7(7.0.14.0)은 연결을 시도한 하위 도메인의 HTTP 서버 포트 80에서 crossdomain.xml을 찾습니다. Flash Player 7(7.0.14.0) 이하 버전은 모두 포트 1024 이상으로 XMLSocket 연결을 제한했습니다. 그러나 Flash Player 7(7.0.19.0) 이상 버전에서는 ActionScript의 System.security.loadPolicyFile을 사용하여 사용자 정의 정책 파일 위치를 Flash Player에 알릴 수 있습니다. XMLSocket 정책 파일의 사용자 정의 위치는 반드시 XML 소켓 서버에 있어야 합니다.
다음 예제에서 Flash Player는 지정된 URL에서 정책 파일을 검색합니다.
System.security.loadPolicyFile("http://www.foo.com/folder/policy.xml");각 위치에 있는 정책 파일로 부여된 모든 권한은 서버의 계층 구조에서 같은 수준 또는 그 아래 수준에 있는 모든 내용에 적용됩니다. 그러므로 다음 데이터를 로드하려고 시도하면 특정 위치에 있는 데이터만 로드할 수 있음을 확인할 수 있습니다.
myLoadVars.load("http://foo.com/sub/dir/vars.txt");
// allowedmyLoadVars.load("http://foo.com/sub/dir/deep/vars2.txt");
// allowedmyLoadVars.load("http://foo.com/elsewhere/vars3.txt"); // not allowed이 문제를 해결하려면 loadPolicyFile을 사용하여 한 SWF 파일에 둘 이상의 정책 파일을 로드합니다. Flash Player에서는 정책 파일을 요구하는 요청을 거부하기 전에 항상 정책 파일 다운로드가 완료되기를 기다립니다. 그리고 SWF 파일에 작성된 다른 정책이 없을 경우 crossdomain.xml의 기본 위치를 검색합니다.
특수 구문을 사용하면 XMLSocket 서버에서 직접 정책 파일을 검색할 수 있습니다.
System.security.loadPolicyFile("xmlsocket://foo.com:414");이 예제에서 Flash Player는 지정된 호스트 및 포트에서 정책 파일을 검색하려고 시도합니다. 정책 파일이 기본(루트) 디렉토리에 없을 경우 모든 포트를 사용할 수 있습니다. 그렇지 않을 경우 이전 Player와 마찬가지로 포트는 1024 이상으로 제한됩니다. 지정된 포트로 연결이 설정되면 Flash Player는 Null 바이트로 끝나는 <policy-file-request/>를 전송합니다.
다음과 같은 방법으로 정책 파일을 제공하도록 XML 소켓 서버를 구성할 수 있습니다.
- 같은 포트를 통해 정책 파일 및 일반 소켓 연결을 제공합니다. 서버는 정책 파일을 전송하기 전에
<policy-file-request />를 기다려야 합니다. - 일반 연결과 다른 포트를 통해 정책 파일을 제공합니다. 이러한 경우 서버는 전용 정책 파일 포트에 연결이 설정되는 즉시 정책 파일을 보낼 수 있습니다.
서버는 연결을 종료하기 전에 Null 바이트를 전송하여 정책 파일을 종료해야 합니다. 서버에서 연결을 종료하지 않을 경우 종료 Null 바이트가 Flash Player에 수신될 때 연결이 종료됩니다.
XML 소켓 서버에서 제공하는 정책 파일은 액세스를 허용할 포트를 지정해야 한다는 것을 제외하고 다른 정책 파일과 구문이 같습니다. 허용되는 포트는 <allow-access-from> 태그의 to-ports 속성에서 지정합니다. 정책 파일이 포트 1024 미만인 경우 모든 포트에 액세스를 허용할 수 있습니다. 정책 파일이 포트 1024 이상을 통해 제공된 경우 1024 이상의 포트에만 액세스를 허용할 수 있습니다. 단일 포트 번호, 포트 범위 및 와일드카드를 사용할 수도 있습니다. 다음 코드는 XMLSocket 정책 파일의 예제입니다.
<cross-domain-policy><allow-access-from domain="*" to-ports="507" />
<allow-access-from domain="*.foo.com" to-ports="507,516" />
<allow-access-from domain="*.bar.com" to-ports="516-523" />
<allow-access-from domain="www.foo.com" to-ports="507,516-523" />
<allow-access-from domain="www.bar.com" to-ports="*" /></cross-domain-policy>
1024 미만의 포트에 연결할 수 있는 기능은 Flash Player 7(7.0.19.0) 이상의 새로운 기능이므로 SWF 파일이 자체 하위 도메인에 연결되더라도 이 포트에 대한 권한을 부여하려면 loadPolicyFile을 통해 로드된 정책 파일이 항상 필요합니다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
이 글의 트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다
::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::
요즘 슬슬 에팩을 다시 하고있지~~~ ㅋㅋㅋ
너무 좋아진 에팩....ㅋㅋㅋ
슬슬 쓸디도 한번 건들여 봐야겠어