Warum ist Flash eine anspruchsvolle crossdomain.xml Datei, wenn die .swf-und http-target sind auf localhost?
Ich habe eine kleine client/server test-Applikation, wo ich einen Flex-app, die eine HTTP-Anforderung von einem server-app. Die server-app ist ein Skript läuft auf meinem lokalen Rechner lauscht auf port 8001. Der client ist eine swf-Datei läuft bei mir lokal und nutzt mx.rpc.http.HTTPService
um die Seite anzufordern.
Die HTTPService-Einstellung wie nachstehend erklärt:
_HttpService = new HTTPService();
_HttpService.url = "http://localhost:8001";
_HttpService.contentType = "text/xml";
Wenn ich eine grundlegende Anforderung der Seite, die mein server-app ist der erste Empfang einer "GET /crossdomain.xml HTTP/1.1"
Anfrage, die versagt, weil ich nicht ein crossdomain.xml Datei statt. Der Grund, warum ich nicht im Ort ist, weil das alles passiert auf meinem lokalen Rechner (für jetzt) und ich sollte nicht nötig sein (ich glaube nicht).
Ich auf jeden Fall hatte dieser code funktioniert, bevor ohne crossdomain.xml wenn ich mit Flex 3.x. Ich dachte, ich hätte es arbeiten mit Flex 4 als gut. Jetzt bin ich mit Flex 4.5. Ist es ein Problem hier, möglicherweise aufgrund von änderungen an Sicherheitsrichtlinien?
Mit all dies geschieht auf localhost, warum ist der Flash-player anfordern crossdomain.xml Datei?
Falls es hilft, die spezifische Störung meiner AsyncResponder wieder ist:
[FaultEvent fault=[RPC Fault faultString="Security error accessing url" faultCode="Channel.Security.Error" faultDetail="Destination: DefaultHTTP"] messageId="F43DCBFF-E99A-99CC-57D8-535C13C7CD48" type="fault" bubbles=false cancelable=true eventPhase=2]
InformationsquelleAutor Russ | 2011-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann es sein, dass, obwohl Sie den gleichen host und Protokoll zwischen der client-Seite und server, der andere port bewirkt, dass Flash zu scheitern, die gleichen Ursprungs testen und fordern Sie die crossdomain.xml um zu sehen, was es erlaubt, das zu tun. Ich gehe davon aus, dass die Seite mit Ihr Flash-Inhalt läuft auf port 80? Wenn das der Fall ist, check out Wikipedia ' s Artikel über die same-origin-policy (http://en.wikipedia.org/wiki/Same_origin_policy) für die details.
Den crossdomain.xml scheint nicht zu umständlich für die lokale Prüfung und ist ziemlich gut dokumentiert help.adobe.com. Können Sie erstellen, crossdomain.xml in der Wurzel Ihrer website wie diese, die es erlauben, alle Zugriff:
Ich würde nicht mit dem oben für etwas anderes als die lokale Entwicklung, wie Sie im Grunde dass Sie keine domain auf Anfrage Inhalt.
Hoffe, das hilft!
Ihre eigenen Rollen xmlrpc-server klingt nach Spaß, obwohl Sie tun müssen unterstützen zusätzliche Nuancen Flash an Ihnen wirft... so wie das für crossdomain.xml. Ich bin mir nicht sicher, Ihrer Umsetzung, aber es könnte sich lohnen zu schauen, in die Nutzung einer bestehenden web-stack und dann der Aufbau einer einfachen web service anstelle der Verwendung von xmlrpc. Wenn Sie mit C#/MS-stack, überprüfen Sie heraus WCF REST mit plain old xml - siehe: link
+1. mrdc ist richtig. Die domain und port muss der gleiche sein, Sie zu ignorieren crossdomain-Richtlinien. Wenn der port ist anders als der Webserver, dann werde es suchen crossdomain.xml. Einfachste Weg, um diese arbeiten, wenn Ihre server in einem application-container (wie glassfish oder tomcat bei Verwendung von Java -/.Net) oder je nachdem, was web-server dienen server-side-scripting-Sprache (php, asp, etc). Viel einfacher, alle haben es getan mit nur einem server.
Ich bin mir nicht sicher, was ich davon halten soll, aber wenn ich schaltete es ein standalone-flash-player-versus-laden in der flash über html in einem browser die crossdomain-Problem geht komplett Weg. sprich: es ist in Ordnung jetzt (und jetzt, dass dies geschehen ist, ich erwarte, dass dies ist, wie ich es lief erfolgreich in der Vergangenheit). Ich bin mir nicht sicher, ob dies übereinstimmt mit der ports-muss-match-Theorie... tut es das?
Mit dem Flash player (fp) vermeidet die crossdomain-Problem, da fp nicht über eine gehostete Kontext. Wenn Flash läuft auf einer web-Seite, der Antrag geht in etwa so: [User] -> [- Webseite (localhost:someport)] -> [Webservice (localhost:someotherport)] und nicht die same-origin-test zwischen der Webseite und Web-Service. Bei der Verwendung von fp müssen Sie nur die [User w/Flash-player (keine gehosteten Kontext)] -> [Web-Service] Der web-service ist die einzige gehostete Zusammenhang, dass die gleichen Ursprungs ist gegen getestet. Und da gibt es nur einen Kontext, es überprüft nicht die für den cross-domain-Probleme. Hoffe, das hilft!
InformationsquelleAutor mrdc
Mithilfe der policyfile.txt ich fand heraus, dass die Politik die Datei wurde verweigert, weil es kein Content-Type angegeben durch den server. Dies erklärt, warum es unmöglich war zu finden, alles, was darüber gebloggt.
Hoffe, das jemand hilft.
In Flex 4.5 Mac
/Benutzer/[BENUTZERNAME]/Library/Preferences/Macromedia/Flash Player/Logs>tail-f policyfiles.txt
Gute Frage, ich denke, die Antwort ist ja. Das ist eine lokale Datei, wenn ich mich Recht erinnere ist es nur eine log-policy-Datei Aktivitäten auf Ihrem lokalen Rechner. Wenn Sie es löschen, und es gibt mehr Aktivität sollte es nur regenerieren? Siehe help.adobe.com/en_US/flex/using/... für mehr Informationen darüber, wie es zu konfigurieren.
Ich habe eine ähnliche Frage wie nach zu und Sie bestätigt, es war ok, um zu löschen, wie gut. Danke!
np, bin froh, dass ich helfen konnte.
InformationsquelleAutor Shanimal