サブノート

技術的なトピックが中心の備忘録

[Flash][Flex]#2032(ストリームエラー)を回避する

イントラネットサーバに置いたFlashのサイトへのアクセス時、#2032(ストリームエラー)が発生することがある。
発生するPCは全て「外部インターネットにはアクセスできない」のだが、「外部にアクセスできない」PC全てがエラー発生するわけではない。


#2032 の原因は、crossdomain.xml にアクセスするため。

ただし、PC内のキャッシュを使用すると思われる。
そのため、過去にFlashのサイトにアクセスし crossdomain.xml をキャッシュとして保持しているPCはキャッシュを使用するため #2032 エラーは発生しない。


解決策は、


前者は社内運用上難しいこともあるため、以下に後者の方法を記述する。

1. サーバに crossdomain.xml をアップロードする

<?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="*" secure="false"/>
</cross-domain-policy>

2. そのURLを ./flex_sdk_XX.XX/frameworks/flex-config.xml に記述する

:
:
<runtime-shared-library-path>
  <path-element>libs/WWWWW.swc</path-element>
  <rsl-url>http://fpdownload.adobe.com/pub/swz/XXXXX/Y.Y.Y.YYY/ZZZZZ.swz</rsl-url>
  <!-- <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url> -->
  <policy-file-url>http://intranet.com/aaaaa/bbbbb/crossdomain.xml</policy-file-url><!-- ← イントラネットURLに書き換える -->
  <rsl-url>VVVVV.swz</rsl-url>
  <policy-file-url></policy-file-url>
</runtime-shared-library-path>
:
:


追記(2015/04/13):
crossdomain.xml 同様、いくつかのSWZファイルも同様にイントラネット上に配備し、そこにアクセスさせる必要がある。
URLは(これも crossdomain.xml 同様に) ./flex_sdk_XX.XX/frameworks/flex-config.xml に記述する。

:
:
<runtime-shared-library-path>
  <path-element>libs/WWWWW.swc</path-element>
  <!-- <rsl-url>http://fpdownload.adobe.com/pub/swz/XXXXX/Y.Y.Y.YYY/ZZZZZ.swz</rsl-url> -->
  <rsl-url>http://intranet.com/aaaaa/bbbbb/ZZZZZ.swz</rsl-url><!-- ← イントラネットURLに書き換える -->
  <policy-file-url>http://intranet.com/aaaaa/bbbbb/crossdomain.xml</policy-file-url>
  <rsl-url>VVVVV.swz</rsl-url>
  <policy-file-url></policy-file-url>
</runtime-shared-library-path>
:
: