SWFでhttpsアクセスする場合にioErrorが発生する問題をご存知でしょうか?これ、知らずにハマると大変です。
というわけで、原因と対策について、例によってヌルくご紹介したいと思います。
事の次第
さて、なにをしようとしたときにどうなってしまう問題なのか。
簡単にいうと、https://~ にアクセスして、結果を受け取りたいのだが、ioError になってしまう。というものです。
現象は Internet Explorer (ActiveX コントロール)と https アクセスのセットのときにだけ起こります。
調べたところ、どうやらInternet Explorer がポイントっぽいです。
参照:
SSL でのファイルの Internet Explorer のダウンロードは、キャッシュ コントロール ヘッダーで動作しません。
[HOWTO] Internet Explorer でキャッシュを無効にする
さらに調べていくと・・・ちょっと困ったことがわかりました。
Internet Explorer (ActiveX コントロール)と https アクセスのセットのときに、サーバからの応答のヘッダーに Pragma: no-cache が含まれているとアウトということです。
ちなみに、われらが GIZMO では SWF をガジェットとして表示するのに ActiveX コントロールを使っています。つまり、この話にガッツリと該当してしまいます。
さてどうしたものか・・・
サーバの応答が・・・とか言われると、残念ながら ActionScript 側ではどうしようもないので、そこは開き直って、サーバ側に手を入れていただくしかありません!
応答に Pragma: no-cache が含まれていなければいいので、 Pragma: とかに適当に書き換えてもらえばOKなのです。
では、よろしくお願いします (はい、自分ではしません、サーバ担当の方よろしくお願いします)。
オマケ
逆に Pragma: no-cache をつけてキャッシュ対策をしよう!というやり方もあるようです。これまた Internet Explorer では思い通りにならないようですけど。