0

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 サービスが初期化しようとするとアプリがクラッシュします。

この問題を解決するための助けをいただければ幸いです。

4

1 に答える 1