2009-03-25 7 views
2

GrüßenFlex Ausgabe mit crossdomain.xml und FileReference.upload

Ich habe eine Flex-Anwendung, die eine Vielzahl von Anforderung an eine Web-Anwendung funktioniert in einer anderen Domäne befindet. Daher habe ich eine benutzerdefinierte crossdomain.xml erstellt, um den Zugriff über meine Flex-App zu ermöglichen. Der Inhalt dieser Datei ist

> <!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> 

Diese crossdomain.xml in einem Unterordner in meinem Webapp befindet: http://host:port/services/crossdomain.xml Die Dienste (einige sind http Dienste andere Web-Services) sind alle innerhalb der Dienste Unterordner.

Ich lade die crossdomain.xml mit Security.loadPolicyFile und alles funktioniert gut. Bis ich versucht habe, mit dem FileReference-Objekt einen Datei-Upload durchzuführen. Selbst wenn mein HTTP-Formular unter dem Unterordner services liegt und ich die crossdomain.xml-Datei korrekt lade (ich kann sowohl HTTP-Anfragen als auch Web-Service-Anfragen), wenn ich versuche, einen Datei-Upload durchzuführen, bekomme ich die berüchtigte Sicherheits-Sandbox-Verletzung.

Ich vermisse etwas? Gibt es spezielle Anweisungen zum Hochladen von Dateien? Laut der Adobe-Dokumentation (http://livedocs.adobe.com/flex/3/html/help.html?content=05B_Security_10.html) ist alles gut konfiguriert. Irgendwelche Ideen?

+0

Welchen Browser, welches Betriebssystem und welche Version von Flash Player verwenden Sie? Es gibt bekannte Unterschiede im Verhalten von FileReference basierend auf dem Browser/Betriebssystem. Dies könnte einer von ihnen sein. –

+0

Hallo, danke fürs Antworten Ich benutze Flex sdk 3.2 SO: Mac OSX Leopard Browser: Safari 3 und Firefox 3. Beide mit dem Flash 10.0 r12 Plugin –

Antwort

3

Beim Dateiupload in Flash Player wird die Socket-API anstelle der Browser-Netzwerk-API verwendet. Um die Dinge auf diese Weise zu tun, benötigen Sie eine socket policy file.

Eine einfachere Alternative ist das Hochladen über ein RemoteObject. Dazu müssen Sie die neuen FileReference-APIs in Flash Player 10 verwenden, damit Sie die Bytes der Datei clientseitig lesen und anschließend innerhalb eines RemoteObject-Aufrufs an den Server senden können.

0

Ich auch das gleiche Problem mit crossdomain.xml 404 nicht gefunden.

Wir integrierten flex mit salesforce.com in unserem Projekt und schlug mit crossdomain.xml Fehler.

Bei der Anmeldeauthentifizierung verwendeten wir den Benutzernamen und das Kennwort zum Testen vor Ort, und im Fehler haben wir die Server-URL angegeben, um eine Verbindung zu salesforce.com herzustellen.

Es funktionierte in allen Browsern außer Chrom gut. Dann wurden die Änderungen vorgenommen, um zuerst die Server-URL zu überprüfen und die Testbenutzername und Passwortdetails in die Fehlerfunktion aufzunehmen. Es funktionierte auch gut mit Chrome. Es wurde keine crossdomain.xml-Datei zum Stamm hinzugefügt.

Könnte mit Chrome Browser sein erste Testdetails wurde nicht überschrieben mit der URL serverl bei Fehler.