2 Results for '크로스도메인'

  1. 2008.10.28 실버라이트 서비스를 위한 서버의 준비사항 총정리 (3)
  2. 2008.02.24 Silverlight 2와 퍼가기 (3)

후우… 이건 뭐 챙피도 보통 챙피가 아니네요.
아무리 해봐도 퍼가기에서 애플리케이션이 동작을 안하길래 1시간 동안 별 쌩쑈를 다 했는데… 결국 서버에 해줘야 할 가장 기본적인 설정을 안해줘서 생긴 문제였어요.

이 기회에 실버라이트 서비스를 위해 필요한 서버측의 준비 사항을 정리해봅니다.

 

[필수]

올바른 MIME-TYPE 등록과 Content-type 응답

먼저 서버에는 반드시 다음과 같이 XAP에 대한 MIME-TYPE이 등록되어 있어야 해요.

확장자 : XAP
MIME-TYPE : application/x-silverlight-app

IIS6의 경우 MIME-TYPE이 없을 경우 애초에 다운로드부터 실패하므로 비교적 원인을 빨리 찾을 수 있는데요,
Tomcat 등으로 돌린 호스트는 MIME-TYPE을 등록하지 않더라도 기본적으로 다운로드를 허용하죠. 그래서 웹 디버깅 툴로 HTTP 200 떨어지는 걸 보고는 MIME-TYPE 문제는 아닐 것이다…라고 안심하고 다른 곳에서 삽질한거죠.

또한 실버라이트 2에서는 서버가 XAP에 응답할 때에는 반드시 올바른 Content-Type을 헤더에 포함하고 있어야 해요.

예)
HTTP/1.1 200 OK
Content-Length: 321175
Content-Type: application/x-silverlight-app
…생략…

자 외쳐봅시다!

프로젝트 시작하면 MIME-TYPE 등록!
다운되는 XAP도 다시 보자!

(참고로 고맙게도 IIS7에서는 XAP에 대한 올바른 MIME-TYPE이 처음부터 등록되어 있어요)

[크로스 도메인에 따른 옵션]

크로스 도메인에 대한 리소스 접근 허용시 clientaccesspolicy.xml 등록

만약 실버라이트 애플리케이션이 크로스 도메인을 넘어 서버에 리소스를 요청할 때에는 반드시 해당 도메인의 최상위 경로에 clientaccesspolicy.xml이 있어야 해요. 물론 크로스 도메인 접근을 허용하지 않는다면 없어도 되겠죠.

참고 : http://timheuer.com/blog/archive/2008/04/06/silverlight-cross-domain-policy-file-snippet-intellisense.aspx
참고 : http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx

 

크로스 도메인에서 실버라이트 실행시 스크립트 사용 허용

만약 실버라이트 애플리케이션이 크로스 도메인 영역에서 실행되고 있다면 기본적으로 스크립트 관련 기능이 사용 불가능 상태가 되는데요, 코드에 따라 다음의 설정들이 필요할 수 있어요.

  • AppManifest.xml에 설정 추가

모든 스크립트 관련 기능을 사용하려면 다음 그림과 같이 실버라이트 애플리케이션 프로젝트의 Properties 아이템을 확장해보면 AppManifest.xml 파일이 보이는데요, 여기에 아래의 설정을 추가해 줘야 해요.

 <Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    ExternalCallersFromCrossDomain="ScriptableOnly">
    <Deployment.Parts>
    </Deployment.Parts>
</Deployment>

  • enableHtmlAccess 설정

HtmlPage 클래스에서 호스트 HTML 페이지에 접근하려면 실버라이트 <object>태그의 <param>중에 다음의 설정을 추가해야 해요.

<param name="enableHtmlAccess" value="true" />

 

  • allowHtmlPopupWindow 설정

HtmlPage.PopupWindow 메서드를 사용하여 팝업을 할 필요가 있다면 실버라이트 <object>태그의 <param>중에 다음의 설정을 추가해야 해요.

<param name="allowHtmlPopupWindow" value="true" />

 

이런 설정들이 없을 때 나오는 증상은 대체로 화면이 허옇게 나오면서 아무것도 안나오거나, Alert이나 Popup이 안되거나, 휠 마우스가 안된다거나, Scriptable로 등록한 JavaScript 오브젝트와의 통신이 안된다거나 하는 현상이에요. 이런 현상을 겪더라도 쫄지마시고 순서대로 짚어 보세요.

저작자 표시 동일 조건 변경 허락
신고
Posted by gongdo

실버라이트와 관련된 가장 많은 질문 중 하나는 '퍼가기를 어떻게 하나요?' 였죠. 전 이 질문을 받을 때마다 목소리가 작아질 수 밖에 없었어요. 바로, 크로스 도메인에 대한 지독하리만치 철저한 제한으로 iframe 말고는 해결할 방법이 없었기 때문이죠.

패키징

실버라이트 2는 드디어 퍼가기를 가능하게 하는 크로스 도메인 정책과 패키징을 지원하게 되었어요!

실버라이트 2는 프로젝트에 포함된 모든 컴파일 코드와 정적인 리소스(이미지, XAML, 사용자 컨트롤, 동영상 등)를 XAP(ZAP, 잽으로 발음) 파일로 압축하게 되고 전과는 다르게 실버라이트는 아주 심플한 <object>태그를 사용하여 이 XAP 파일을 지정하는 것 만으로 HTML 페이지에 간단하게 올릴 수 있죠.

여기에서도 최근 마이크로소프트의 공개적인 플랫폼 정책을 엿볼 수가 있는데요, 바로 XAP 파일은 특수한 바이너리가 아닌 표준 ZIP 형식이란 것이죠. XAP은 아무 ZIP 압축해제 프로그램으로 그 안에 들어있는 파일들을 풀어볼 수 있게 돼요.

여기에서 아마도 컨텐트의 저작권에 대한 걱정을 할 수도 있을텐데요, 설마 저작권 보호가 필요할 정도로 중요한 컨텐트를 단순히 정적 리소스로 추가할 개발자는 없겠죠? 예를 들어, HTML에 덜렁 img 태그나 embed 태그로 컨텐트를 넣는 것 처럼요. 당연히 저작권 보호가 필요한 컨텐트는 웹서버의 특정 영역에 적절한 보호 수단을 적용하여 보관하게 될 거에요. XAP파일에 같이 넣는게 아니라요.

실버라이트 2는 XAP으로 압축되면서 애플리케이션의 크기와 전송속도를 대폭 향상시킬 수 있게 되었어요. 일단 파일이 한개로 줄어들면서 웹 서버에 대한 요청이 줄어드는 것만 해도 상당한 전송속도 향상을 얻을 수 있죠. 거쓰리 아저씨의 정보에 의하면 현재(Beta1) 가장 단순한 Hello World 예제에 해당하는 XAP파일은 약 4kb에 불과하죠. WOW!

배포

또 한가지 신경쓰지 않을 수 없는 것은 바로 실버라이트 런타임의 배포죠. 실버라이트 1.0에서도 이미 마이크로소프트의 다운로드 링크 방문, 설치 파일의 직접 다운로드 방식을 기본으로 지원하고 동시에 커스터마이징된 어떠한 형태의 배포도 보장하고 있죠. 심지어 원한다면 ActiveX를 사용하여 배포할 수도 있어요. 실버라이트 2도 비슷한 방식을 지원할 것 같지만 아직 정확한 정보는 없네요.

여튼 실버라이트 2는 4.3메가 정도의 배포 용량을 가지고 있고 설치에는 약 4~10초 정도밖에 걸리지 않는 다는군요.

많은 분들이 오해하고 있는 점 중에 하나는 실버라이트가 닷넷 프레임워크를 설치해야 구동된다고 알고 있다는 건데요, 절대로! 그렇지 않아요. 실버라이트 2에 필요한 모든 구성요소는 4.3메가 정도에 불과한 실버라이트 설치 파일에 완전히 통합되어 있어요. (※MAC을 위한 설치 파일은 MAC 환경상 더 클 수도 있다고 들었어요) 실버라이트 런타임은 다른 어떠한 컴포넌트나 프레임워크에의 의존성을 가지고 있지 않다고 다시 한번 강조해요. 이젠 이런 질문은 받지 않았으면 좋겠네요 :-)

크로스 도메인

퍼가기에 있어서 또 한가지 제약은 크로스 도메인 리소스에 대한 접근이었죠. 실버라이트 2는 드디어 크로스 도메인 리소스에 대한 제한도 해제하여 실버라이트 클라이언트가 다른 도메인 상의 리소스와 데이터를 접근할 수 있게 되었어요. 게다가 향상된 네트워킹 지원으로 REST, WS*/SOAP, POX, RSS 및 표준 HTTP 서비스를 사용할 수 있다고 하는군요. 특히 REST와 RSS의 표준 지원은 매시업 애플리케이션을 작성하는 데 가장 핵심적인 요소로 웹서버의 도움 없이도 재밌는 매시업 애플리케이션을 만들고 자유롭게 배포하는데 결정적인 역할을 할 거에요.


후후... 이제 하나 둘 씩 실버라이트 2에 대한 정보가 풀리기 시작하네요. 기대되지 않으세요? 단지 이것만 있는게 아니에요. MIX08이 얼마 안남았네요. 더 놀라운 점들은 MIX08에서 천천히 감상하셔도 될 거에요. :D

신고
Posted by gongdo


티스토리 툴바