2010-12-05 13 views
0

Ich habe eine swf, die ich erstellt habe, die ein paar HTML-Posts machen. Wenn ich das swf lokal laufe und kompiliere, macht es erfolgreich Posts zu meinem PHP-Code, der in meiner Domain gehostet wird. Wenn ich dann aber mein SWF in meine Domain hochlade und dann das Embed-Tag ändere, um einen vollständig qualifizierten Pfad zu meinem gehosteten SWF zu haben, wird das SWF korrekt geladen, aber es werden irgendwelche HTML-Posts zu meinen PHP-Skripten gemacht. Der Grund dafür, dass ich ein Tag mit der voll qualifizierten URL darin einbetten kann, ist, dass mein Ziel hier ist, den HTML-Embed-Code auf einer Reihe von verschiedenen Seiten zu platzieren.Flex HTML Post Fehler - Sicherheitsproblem?

Ich habe es auf einer einzigen Remote-Site arbeiten, und es hat eine Wildcard crossdomain.xml-Datei darin. Wenn ich jedoch versuche, eine crossdomain.xml auf irgendeine der gehosteten Seiten anzuwenden, oder lokal auf meinem Computer läuft nichts, wenn ich die Einbettung mit der vollqualifizierten URL nutze, wenn ich nur das lokal gehostete swf auf meinem Computer das HTML-Post arbeite Alles gut.

Ich glaube, das ist mit der crossdomain.xml-Datei verwandt, aber ich denke, ich verstehe nicht einige Aspekte des Sicherheitsmodells.

Also mein Ziel ist es, in der Lage, den HTML-Code einzubetten mit einer voll qualifizierten swf (zum Beispiel "http://www.abc.com/myswf.swf") auf einer Reihe von anderen Seiten einfügen und haben Es macht Standard-HTML-Posts auf meiner Homepage (http://home.com).

Danke für jede Hilfe zu diesem Thema. Ich bin so nah dran, wie ich schon sagte, ich habe es auf einer Remote-Site funktioniert, aber ich bin mir nicht sicher, wie. Alle anderen Websites, für die ich den Einbettungscode posten, schlagen fehl.

Antwort

1

Ok, ich bearbeite meine Antwort und folge den Beispielen, die du gerade gegeben hast.

Nach dem Fehlerbericht, den ich bekomme, ist das Problem mit einem ExternalInterface-Aufruf, der nicht von der swf auf die Website erlaubt ist, Hosting Ihres swf.

Es funktioniert im zweiten Beispiel, weil der Aufruf innerhalb der gleichen Sandbox erfolgt.

aus der Dokumentation Genommen:

SecurityError — The containing environment belongs to a security sandbox 
    to which the calling code does not have access. To fix this problem, 
    follow these steps: 
    In the object tag for the SWF file in the containing HTML page, 
    set the following parameter: 
    <param name="allowScriptAccess" value="always" /> 

    In the SWF file, add the following ActionScript: 
    flash.system.Security.allowDomain(sourceDomain) 

Sie auch den Parameter allowNetworking in Ihrem Code einbetten zu können müssen prüfen ...

+0

Unforunately das keine Option ist. Ich habe nicht die Möglichkeit, swf auf jede Seite hochzuladen. Hier ist das Live-Beispiel von dem, was vor sich geht ... Hier ist also der Link der externen Seite, die nicht mit dem PHP Script kommunizieren kann. http://ryan.d3-systems.com/?p=148 und hier funktioniert das exakt gleiche Skript, http://securedmark.com/demo.php. Sie können sehen, dass ich eine crossdomain.xml sowohl hier http://ryan.d3-systems.com/crossdomain.xml und hier http://d3-systems.com/crossdomain.xml habe. Ich kann also nicht herausfinden, was ich hier falsch mache, da es auf der gehosteten Seite großartig funktioniert. – Ryan

+0

Das war genau das Problem. Vielen Dank PatrickS, ich kann nicht glauben, dass ich das vermisst habe. – Ryan