5

わかりました、4時間燃えました。助けを求めてSOに向かいます。

すぐに理解できるように、事実は次のとおりです。

  • 私のラップトップで正常に動作する既存の AIR Mobile アプリと、HTTP モードでテストしたすべての Android デバイス (Kindle、Nexus、Asus A100) があります。

  • HTTPSに切り替えるとすぐに、ラップトップとKindleデバイスのみがサーバーに接続します

  • 他のデバイスでは、FaultEvent が返され、エラーには次のように表示されます

  • Nexus/A100 のブラウザで上記の URL にアクセスすると、期待どおりに空白のページが返されます

  • この同じ接続を使用する Flex ベースのアプリは、何年もの間問題なく動作していましたが、これはその HTTPS 接続を使用する最初の AIR アプリです。

  • キャプティブ ランタイム機能を使用しています

  • ColdFusion 9 バックエンド

  • タブレットでのみ発生するため、Web トラフィックをデバッグできません。現在、Fidder を使用してラップトップでできるように、タブレットでトラフィックをキャプチャする方法がわかりません (現在調査中)。

他に必要な情報がありましたら、できるだけ早くお知らせください。

上記以外にも、crossdomain.xml ファイルが存在し、適切にセットアップされていることを確認する、CF の services-config.xml ファイルの設定を変更するなど、他のいくつかのことも調べました。

私の現在の考えでは、SSL証明書の連鎖と関係があるのではないかと考えています.NexusでルートCAが信頼されていないなどのように? (どちらが GlobalSign ルート CA ですか) それとも、Flex 時代のデフォルト ブラウザや IE/プロキシと関係がありますか?

これは前に見たことがないので、できる限りの助けを借ります。

[更新]: この問題を再現するために使用できる小さなサンプルを作成しました: https://www.dropbox.com/s/5nmilo3tbwr2k8d/HTTPTestSource.zip

ソース、コンパイル済み .AIR (デスクトップ用)、コンパイル済み .APK (Android デバイス用) など、必要なものがすべて含まれています。デスクトップは HTTP と HTTPS で正常に動作しますが、モバイル APK は HTTP でのみ動作します。必要に応じて、独自のサーバーに配置するためのサンプル CFC も含めました。

ここまで読んでくれてありがとう!

4

3 に答える 3

4

[解決済み]

まあ、私は自分の状況でうまくいきました-これが他の人に役立つことを願っています.

問題は AIR キャプティブ ランタイムです。HTTPS を使用している場合は機能しないようです。私の最初の開発ハードウェアは Kindle Fire で、Kindle Fire には AIR ランタイムがプリインストールされていたため、それに切り替える必要がありましたが、最新バージョンの AIR が必要でした。だから、キャプティブランタイムをオンにして、楽しい道を進んだ.

ライブになったとき、エンドポイントを HTTPS サーバーに変更し、Kindle は引き続き動作しましたが、他のすべてのタブレットは機能しませんでした。

これを修正するために、キャプティブ ランタイムをオフにして再コンパイルし、アンインストール/再インストールした後、別のインストールを提供する必要がある Kindle Fireを除くすべてのタブレットで動作するようになりました。

うまくいけば、これは同じ問題を抱えている他の人に役立ちます.

于 2013-03-02T22:03:01.010 に答える
1

質問を更新していただきありがとうございます。確かに、問題の解決策を突き止めるのに役立ちました。AIR 3.7 を Flex 4.10 ビルドと共に Apache Flex からインストールし、https 接続に正常に接続できました (Flash ビルダーでリリース ビルドをエクスポートした後、キャプティブ ランタイムを使用)。したがって、この問題が発生した場合は、新しい AIR SDK のいずれかを使用するだけで問題が解決するはずです。

于 2013-08-29T03:31:29.080 に答える
0

PRB、

私はフレックス開発者を形作ったり形成したりしているわけではありません。この情報に出くわしたのは、私たちが職場で抱えていた crossdomain.xml の問題を最近調査していたときです。Adobe サイトで、呼び出し元のフレックス アプリが HTTPS 接続の背後にない場合に、HTTPS 接続の背後にある Web サービスを呼び出すときに問題があることを示すページを見つけました。

allow-access-from タグに secure="false" 属性を追加する必要があります。

<cross-domain-policy>
    <allow-access-from domain="*.mydomain.com" secure="false"/>
</cross-domain-policy>

これはhttp://livedocs.adobe.com/flex/3/html/help.html?content=security2_15.htmlから取得しました。

コメントセクションには、役立つ可能性のある追加の詳細がいくつかあります。HTTPS 経由で WSDL を呼び出すことはできますが、WSDL のロケーション フィールドに HTTPS:// ではなく HTTP:// が含まれている場合、残りのすべての呼び出しは HTTPS ではなく HTTP 経由になります。

--

余談ですが、Flash Player と flex はトランスポートにブラウザの http メカニズムを使用しているようですが、AIR はそれを直接実装しているため、flex アプリが失敗し、Air アプリが機能している理由を説明できます。これは、デバッグ (開発環境の http トランスポートを使用) およびリリース (ホスト ブラウザーの http トランスポートへの切り替え) で動作する理由に関する問題でもある可能性があります。

ティム・サップ

于 2013-02-27T21:47:29.277 に答える