株式会社antsのホームページへようこそ。

httpsアクセスができない!?

0
Posted in Lab. By antsinc

SWFでhttpsアクセスする場合にioErrorが発生する問題をご存知でしょうか?これ、知らずにハマると大変です。
というわけで、原因と対策について、例によってヌルくご紹介したいと思います。

事の次第

さて、なにをしようとしたときにどうなってしまう問題なのか。
簡単にいうと、https://~ にアクセスして、結果を受け取りたいのだが、ioError になってしまう。というものです。
現象は Internet Explorer (ActiveX コントロール)と https アクセスのセットのときにだけ起こります。
調べたところ、どうやらInternet Explorer がポイントっぽいです。

参照:
SSL でのファイルの Internet Explorer のダウンロードは、キャッシュ コントロール ヘッダーで動作しません。
[HOWTO] Internet Explorer でキャッシュを無効にする

さらに調べていくと・・・ちょっと困ったことがわかりました。

参照:
前向きな技術者になるためのブログ [Flex] httpsでアクセスできない その3

Internet Explorer (ActiveX コントロール)と https アクセスのセットのときに、サーバからの応答のヘッダーに Pragma: no-cache が含まれているとアウトということです。
ちなみに、われらが GIZMO では SWF をガジェットとして表示するのに ActiveX コントロールを使っています。つまり、この話にガッツリと該当してしまいます。

さてどうしたものか・・・

サーバの応答が・・・とか言われると、残念ながら ActionScript 側ではどうしようもないので、そこは開き直って、サーバ側に手を入れていただくしかありません!
応答に Pragma: no-cache が含まれていなければいいので、 Pragma: とかに適当に書き換えてもらえばOKなのです。

では、よろしくお願いします (はい、自分ではしません、サーバ担当の方よろしくお願いします)。

オマケ

逆に Pragma: no-cache をつけてキャッシュ対策をしよう!というやり方もあるようです。これまた Internet Explorer では思い通りにならないようですけど。

参照:
Jinten Blog [AS3]外部データをロード。そしてキャッシュしない(1)