태그 보관물: crossdomain

Runtime font sharing.

우선 공유하려는 폰트를 라이브러리에 등록하고, 아래 그림과 같이 설정한 다음 SWF을 퍼블리시 합니다.
First, register a font in the library, and set the linkage properties like the following image. Then, publish the SWF file.
まず、共有しようとするフォントをライブラリに登録し、下のイメージのように設定して、SWFファイルを出版します。

Sharing a font

이 SWF파일을 Loader 객체로 로드한 다음, 아래 코드를 사용하여 공유된 폰트를 등록, 사용할 수 있습니다.
Load the SWF via Loader object, then you can retrieve the shared font from the loaded SWF.
このSWFファイルをLoader客体を通じてロードした後で、次のコードを使って、共有されたフォントを登録し、使用できます。
var sharedFont:Class = font_loader.contentLoaderInfo.applicationDomain.getDefinition("Gothic") as Class;
Font.registerFont(sharedFont);

Using the shared font.

그러나 여기서 한 가지 문제가 있습니다. 같은 도메인의 경우 상관이 없으나, 서로 다른 도메인에서는 SWF가 로드되었다 하더라도, ApplicationDomain.getDefinition() 메소드를 통해 폰트를 가져올 수 없습니다. 즉, www.mydomain.com의 SWF에서 font.mydomain.com의 SWF파일에 정의된 폰트를 사용할 수 없다는 것입니다.

이 문제를 해결하기 위해서는 LoaderContext.securityDomain 속성을 사용하여, 다른 도메인의 SWF 사이에서 자원에 대한 접근을 허용할 필요가 있습니다. 다음의 코드는 LoaderContext를 사용하여 다른 도메인 사이에 폰트를 공유할 수 있도록 구성한 것입니다.

But there is a problem. If the two SWF files is on the same domain, no problem. If the SWFs are seperated in different domains, you can not access to the shared font with ApplicationDomain.getDefinition() method, though the SWF file is loaded in. So, an SWF file on www.mydomain.com can not use a font in an SWF on font.mydomain.com.

You can use LoaderContext property, to allow access to assets in a different domain’s SWF file. The following code shows how it works.

でも、一つ、問題があります。同じドメインなら問題ないが、二つのSWFファイルが違うドメインにあると、そのSWFをロードしても、ApplicationDomain.getDefinition()メソッドを使って共有フォントにアクセスすることが出来ないんです。

この問題を解決するために、LoaderContext.securityDomain属性を設定して、他のドメインにあるSWFファイルの資源にアクセスを許容しなければなりません。次のコードは、LoaderContextを使用して、違うドメインからフォントを共有しに作成したものです。

Runtime font sharing. 더보기

allow-http-request-headers-from tag in crossdomain.xml

얼마전에 공개된 Flash Player 9,0,124,0 업데이트는 악의적인 HTTP 헤더에 대한 보안 취약점을 해결하기 위해서 크로스-도메인 정책이 변경되었습니다. 다른 도메인 상의 SWF 파일로 부터 HTTP 헤더의 전송을 허용할 지 여부를 크로스-도메인 정책 파일에서 설정할 수 있습니다.

AS3에서 URLRequest.requestHeaders를 사용하여 다른 도메인 간 HTTP 헤더의 전송을 허용하려면, 다음 예와 같이 allow-http-request-headers-from 태그에 도메인과 헤더를 명시해 주어야 합니다.

1
2
3
4
5
6
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
      <allow-access-from domain="*.hangunsworld.com" />
      <allow-http-request-headers-from domain="*.hangunsworld.com" headers="*"/>
</cross-domain-policy>
보다 자세한 정보는 아래 링크들을 참고하세요.
For more information, visit the following links.
もっと詳しい情報は、下のリンクへ。

Flash Player Developer Center – Understanding Flash Player 9 April 2008 Security Update compatibility
Adobe TechNote – Arbitrary headers are not sent from Flash Player to a remote domain

Flickr opens up for Flash

Flickr changes its cross domain policy and allows Flash applications to load images from Flickr server and to modify bitmap data of the images. The new cross domain ploicy file(http://static.flickr.com/crossdomain.xml) lets Flash applications on any servers to access Flickr images.
Before the change, you can load images from Flickr server. But, you can not access the bitmap data of the images and can not make bitmap data using BitmapData.draw() method. Now, it is possible.

To access the bitmap data, you have to set LoaderContext.checkPolicyFile to true.

플리커가 플래시 어플리케이션에서 플리커의 이미지를 로드하는 것은 물론 비트맵데이터도 제어가 가능하도록 크로스 도메인 정책을 오픈하였습니다. 새로운 크로스 도메인 정책 파일(http://static.flickr.com/crossdomain.xml)은 모든 서버의 플래시 어플리케이션에서 접근이 가능하도록 바뀌었습니다.
이전에는 이미지를 로드하더라도, 비트맵데이터를 가공하거나 BitmapData.draw() 메소드를 이용하여 이미지를 비트맵데이터로 변환할 수 없었지만, 이제 가능하게 되었습니다.

그러나 다른 서버로 부터 로드된 이미지를 가공하려면, 다음과 같이 AS3에서 LoaderContext.checkPolicyFile 설정을 해주어야 합니다.

Flickrはクロスドメイン政策を変更して、フラッシュアプリケ―ションがFlickrサ―バ―のイメージをダウンロードしてBitmapDataを改めることができました。新たなクロスドメイン政策ファイル(http://static.flickr.com/crossdomain.xml)はあらゆるサーバーからのアクセスを許します。
以前には、Flickrサーバーからイメージをロードしても、BitmapDataを修正することとBitmapData.draw()メソッドを使ってBitmapDataを作ることはできなかった。今なら出来ます。

BitmapDataにアクセスするためには、LoaderContext.checkPolicyFile設定をしなければならないんです。

1
2
3
4
public var context:LoaderContext;
context = new LoaderContext();
context.checkPolicyFile = true;
loader.load(loaderUR, context);

via Flickr: Now Even More Flash-friendly