https Web サービスに接続する必要がある Flex アプリがあります。Web サービスの WSDL URL は、SSL オフロードが使用される wsdl-url.company.com として指定されます。
Flex アプリは、Web サービスと同じサーバーに存在します。
mxml で次のように定義されている Web サービス
<s:WebService id="webService" wsdl="https://wsdl-url.company.com/service.asmx?wsdl">
サーバーのルートにある crossdomain.xml ファイルは
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM /xml/dtds/cross-domain-policy.dtd>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
swf が HTTPS アドレスから読み込まれる場合、ページが読み込まれる (Web サービスが初期化される) ときに crossdomain.xml は swf によって要求されませんが、Web サービスが呼び出されると、https の代わりに同等の http への POST が試行されます。
つまり、Firebug を使用すると、Flex が HTTPS であるはずの への POST を実行していることがわかります。https として宣言されているのに Flex がこれを http に変更するのはなぜですか?
一方、swf が同じサーバーで HTTP から読み込まれると、crossdomain.xml がダウンロードされますが、Flash デバッガーは「Channel.Security.Error」をスローし、Web サービスが初期化しようとするとアプリがクラッシュします。
この問題を解決するための助けをいただければ幸いです。