[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> : :