2012-03-05 3 views
2

두 가지 중요한 사항. 1 - SWF는 모든 도메인의 바이너리 데이터를로드 할 수 있어야합니다. 2 - SWF 캔트로드 정책 url에서 XML 파일, 원인 업로드 양식을 사용하면 swf 파일 만 업로드 할 수 있으므로 다른 데이터는 포함 할 수 없습니다. 시도 :Flash AS3 - URLLoader가 다른 도메인의 이진 데이터를로드 할 수 없습니다.

Security.allowDomain("*"); 

그러나 SWF 파일에서만 작동합니다. 나는 정책 XML 파일을 포함하려 :

var dataXML:XML = 
<?xml version="1.0"?> 
<!-- http://www.foo.com/crossdomain.xml --> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy>; 

그러나에 Security.loadPolicyFile (URL : String)를 전용 파일의 URL이 아닌 데이터를 설정할 수 있습니다. 내 질문에, SWF에서 다른 도메인의 이진 파일을 추가 파일없이로드 할 수있게하려면 어떻게해야합니까? 은 URLLoader 코드 : 파일이 SWF 파일과 다른 도메인의 경우

var request:URLRequest = new URLRequest("http://differentdomain.com/binaryfile.dat"); 
var words:URLLoader = new URLLoader(); 
words.dataFormat = URLLoaderDataFormat.BINARY; 
words.addEventListener(Event.COMPLETE, prepareFile); 
words.addEventListener(IOErrorEvent.IO_ERROR, loadError); 
words.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secureError); 
words.load(request); 

이,주의 보안 오류를 만들 것입니다. 도움 주셔서 감사합니다.

AS3 코드에서 ExternatInterface를 사용하여 JavaScript에서 이진 데이터를 가져올 수 있습니다. 다음은 이진 파일 읽기 용 교차 브라우저 라이브러리입니다. binary reader 이상 버전 jDataView 희망이 있으면 도움이 될 것입니다. Jonatan Hedborg에게 감사드립니다. 전에

+0

aaa.com에서 파일을로드하려면 aaa.com/crossdomain.xml에서 crossdomain.xml을로드해야합니다. 그렇지 않으면 작동하지 않을 수 있습니다. –

+0

그것은 나를 위해 농담처럼 보입니다. 다른 언어는 AS3이 아닌 어느 곳에서나 바이너리 데이터를 다운로드 할 수 있습니까? – speedy

+0

그것은 보안상의 문제이며, 그것이 바로 그 것이다.그 주위의 유일한 방법은 요청을 전달할 수있는 프록시 서버를 설정하는 것입니다. 예를 들어 silverlight는 crossdomain 로딩에 대한 더 엄격한 제한을 가지고 있으므로이 언어가 유일한 언어는 아닙니다. –

답변

2

이을 읽어야 할 사람 : 프록시 스크립트를 사용할 수 있습니다 http://kb2.adobe.com/cps/142/tn_14213.html

그리고 검색, 구글/

+0

좋아, 내가 읽을 것이지만, 나는 swf 안에 스크립트를 뜻합니다. 내가 외부 스크립트/서버에 의존하게 만들지는 않는다. 또한 SWF 파일 이외의 다른 것을 업로드 할 수 없습니다. 그렇지 않으면 같은 도메인에 중개 다운로드 PHP 파일을 만들 것입니다. 왜 프로그래머가 swf 파일의 코드 안에이 설정을 넣을 수 없지만 프록시를 사용하여 트릭을 사용해야하는지 이해할 수 없다. 이 설정을 포함시킬 방법이 없습니까? – speedy

+0

당신이 문제를 오해하고 설정이 아닌 것 같습니다. – soju

0

플래시가 가장 일반적으로 사용되는 컨트롤입니다 ... 당신이 답변을 많이 찾을 수 있습니다 유래 HTML 페이지. 결과적으로 동일한 페이지의 다른 객체 (예 : 자바 스크립트)에 대한 보안 제한 사항을 따라야합니다. 웹 페이지는 same origin 보안 정책을 사용합니다. 페이지의 개체는 현재 페이지의 도메인과 다른 도메인의 데이터를 읽을 수 없습니다.

다른 도메인의 서버가 이러한 액세스를 허용하는 경우가 있습니다. 나는. Flash의 경우 crossdomain.xml이며 Silverlight와 비슷한 정책 파일이 존재하므로 JSONP을 비롯하여 JavaScript에 대한 여러 가지 방법으로 처리 할 수 ​​있습니다.

동일한 출처 정책을 우회하는 방법을 잘못 사용하면 종종 개인 정보 유출로 이어지는 컨트롤을 호스트하는 사이트/페이지에 cross-site scripting 문제가 발생합니다.

0

이전에 비슷한 문제를 해결하고 UrlStream을 사용하여 런타임에 대상 SWF의 바이트를로드했습니다.

는 요점 : https://gist.github.com/1988661

+0

바이너리 데이터를로드하려고합니다. 나는 당신의 스크립트를 테스트했는데 제 경우에는 작동하지 않습니다. – speedy

1

가 이것 좀보세요 : http://wonderfl.net/c/gJXA

모든 도메인의 모든 이진 데이터와 함께 작동 어떤 트릭을, 아약스 또는 자신의 프록시 스크립트를 사용하지 않고 (때로는에 가능성을 가지고 있겠지 업로드 PHP 스크립트).

+0

이것은 URLLoader가 아닌 Loader를 사용하므로 이진 데이터에 액세스 할 수 없다고 생각합니다 (예 : URL을 이미지 URL로 변경해보십시오). –

+0

@Penx이 스크립트와 함께 URLLoader를 사용할 수도 있고 바이너리 데이터를 얻을 수도 있습니다. 언젠가 그것을 시도하십시오. 하지만 2MB 정도의 크기 제한이 있다고 생각합니까? 아니면 내가 한도에서 데이터를 얻은 서버인지는 모르겠습니다 ... –

관련 문제