2009-03-25 4 views
2

グリーティングフレックスcrossdomain.xmlとFileReference.uploadの問題

私は別のドメインにあるWebアプリケーションに対してさまざまな要求を行うFlexアプリケーションを持っています。したがって、Flexアプリケーションからのアクセスを許可するカスタムcrossdomain.xmlを作成しました。 http://host:port/services/crossdomain.xml サービス(いくつかは、サービスの他のWebサービスのhttpをしている)すべてのサービスサブフォルダ内に位置しています このファイルの内容は

> <!DOCTYPE cross-domain-policy SYSTEM 
> "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
> <cross-domain-policy> 
>  <site-control permitted-cross-domain-policies="all"/> 
>  <allow-access-from domain="*" secure="false" to-ports="*"/> 
> </cross-domain-policy> 

このcrossdomain.xmlのは、私のWebアプリケーション内のサブフォルダに位置していますです。

Security.loadPolicyFileを使用してcrossdomain.xmlをロードしていて、すべてがうまく動作します。 FileReferenceオブジェクトを使ってファイルをアップロードしようとするまでは。私のHTTPフォームがサービスサブフォルダの下にあって、crossdomain.xmlファイルを正しくロードしていても(HTTP要求とWebサービス要求のどちらかを行うことができます)、ファイルをアップロードしようとするたびに悪名高いセキュリティサンドボックス違反が発生します。

私に何かが不足していますか?ファイルのアップロードを許可する特別な指示はありますか? Adobeのドキュメント(http://livedocs.adobe.com/flex/3/html/help.html?content=05B_Security_10.html)によれば、すべてがうまく構成されています。何か案は?

+0

どのFlash Playerのブラウザ、OS、およびバージョンを使用していますか?ブラウザ/ OSに基づくFileReferenceの動作には、既知の違いがあります。これは別のものかもしれません。 –

+0

こんにちは、お返事ありがとうございます 私はFlex SDKを使用しています。 SO:Mac OSX Leopard ブラウザ:Safari 3およびFirefox 3. Flash 10.0 r12プラグイン –

答えて

3

Flash Playerでのファイルアップロードでは、ブラウザのネットワーキングAPIではなくソケットAPIが使用されます。だからこのようにするにはsocket policy fileが必要です。

もっと簡単な方法は、RemoteObject経由でアップロードを行うことです。これを行うには、Flash Player 10で新しいFileReference APIを使用する必要があります。これにより、クライアント側のファイルのバイトを読み取り、RemoteObject呼び出し内のサーバーに送信できます。

0

crossdomain.xml 404にも同じ問題がありました。

私たちはプロジェクトでsalesforce.comとflexを統合し、crossdomain.xmlエラーを犯しました。

ログイン認証では、ローカルでテストするためにユーザー名とパスワードを使用しましたが、フォールトではsalesforce.comに接続するためのサーバーURLを指定しています。

クロムを除くすべてのブラウザでうまくいきました。その後、まずサーバーのURLを確認するための変更を行い、クロムで正常に機能したフォルト機能にテストのユーザー名とパスワードの詳細を含めました。 crossdomain.xmlファイルをルートに追加しませんでした。

クロムブラウザでの初期テストの詳細は、障害時にserverl URLで上書きされませんでした。

関連する問題