2011-12-21 3 views
1

소켓을 사용하여 플래시에서 Amazon S3로 jpeg를 업로드하려고하는데 URLLoader를 피하고 FileRefrence가 사용자 상호 작용이 필요한 다른 보안 정책 문제를 업로드하려고합니다. 크기를 조정하고 이미지를 ByteArray로 인코딩하고 외부 인터페이스 호출을 기반으로 이미지를 업로드 할 수 있기를 원합니다. 나는이 예를 보았다. as3httpclient 소켓을 사용하여 s3에 플래시 업로드

https://github.com/gabriel/as3httpclient/blob/master/test/s3/S3PostTest.as

나는 다음에 crossdomain.xml

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd"> 
<!-- Policy file for xmlsocket://socks.example.com --> 
<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*" secure="false"/> 
</cross-domain-policy> 

을 사용하고 난 preverbal

오류 가지고 : //mybucket.s3.amazonaws.com : XMLSocket에에서 자원에 대한 요청 : 80 요청자에 의해 http://mybucket.s3.amazonaws.com/swf/myswf.swf에서 정책 파일 사용 권한 부족으로 인해 거부되었습니다.

이 소켓 구현을 사용하지만이 시점에서 내가 무엇을 놓치고 있는지 알지 못합니다. S3는 포트 80 또는 443을 통한 플래시 소켓 구현에서 정책 파일을 찾을 수 없습니까? 그러나이 as3httpclient 예제가 왜 위에 있는지, 누군가에게 아이디어가있는 이유를 설명하지 못했습니까?

답변

0

소켓 (HTTP 트랜잭션 처리를 위해 as3httpclient use 소켓 사용)을 사용하려면 크로스 도메인 정책 파일이 필요합니다.

소켓 목적지 지점과 동일한 서버 (여기서는 http://mybucket.s3.amazonaws.com)에서 서비스해야합니다.

843 포트 (XMLSocket 트랜잭션)를 통해 서비스를 제공하거나 HTTP를 통해 사용 가능하게하려면 예 : http://mybucket.s3.amazonaws.com/crossdomain.xmlSecurity.loadPolicyFile("http://mybucket.s3.amazonaws.com/crossdomain.xml");을 HTTP 트랜잭션 전에 호출하십시오.

참고 문헌 :

+0

나는 그것을하고있다 OK : 정책 파일이 받아 들여진다 : http://mybucket.s3.amazonaws.com/crossdomain.xml 나의 이해는 당신이 소켓을 인스턴스화 할 때 플래시 플레이어가 이제 xmlsocket : // mybucket을 찾는다는 것이다. .s3.amazonaws.com : 80 그리고 이것은 POST 호출을 한 직후에 발생하며 S3에서 거부 될 때 발생합니다. – h1vpdata

1

나는 대답은 아마존 S3에 대한 as3httpclient 코드는 어도비 에어하지 플래시/플렉스위한 것이라고 생각합니다.

http를 통해 소켓 정책 파일을 검사 할 때 플래시가 여전히 포트 80에서 소켓을 통해 검사해야하므로 (http를 통해 허용되는 경우에도) 실패합니다.

+0

동일한 문제가 있으며 동일한 결론에 도달하기 시작했습니다. – Tom

0

크로스 도메인 정책 파일 외에도 서버 (귀하의 경우 S3)가 Socket Policy File Server을 통해 성공적인 소켓 연결을 허용해야하므로 작동하지 않습니다. 그리고 S3는 분명히 그것을 실행하지 않습니다.

웹 응용 프로그램 (Flash/Flex)에서만 필요하며 데스크톱 응용 프로그램 (AIR 등)은 소켓 정책 파일 서버 승인없이 통과 할 수 있습니다.

관련 문제