Was tun bei Netzwerkfehlern beim Laden der Richtliniendatei crossdomain.xml?

8

Ich überwache (und protokolliere den Server) die meisten Benutzerfehler in unserem Flash-Spiel. Ziemlich häufig sehe ich Sicherheitsfehler im Zusammenhang mit dem Versuch, Anfragen an eine domänenübergreifende URL zu stellen (normalerweise die Facebook Graph API). 99% unserer Spieler können diese Grafik-API-Aufrufe ohne Probleme durchführen.

Was ich denke, ist, dass der Client eine Anfrage stellt, aber die Datei crossdomain.xml nicht laden kann. Ich weiß nicht genau, wie AS3 dies behandelt, wenn die crossdomain-Richtliniendatei nicht geladen wird ... Wird es für jedes URLRequest wiederholt, bis es erfolgreich geladen wird, oder gibt es einfach für immer auf? Was ist die "Best Practice" als Antwort auf einen Sicherheitsfehler wie diesen?

Ich lade die Facebook-Richtliniendateien einmal im Voraus vor, wie folgt:

%Vor%

Dann muss ich die Policy-Datei erneut überprüfen, wenn ich URLRequest mache.

    
Toxikman 13.09.2011, 08:17
quelle

2 Antworten

2

Hier ist eine Lösung, die scheinbar funktioniert.

Angenommen, Sie verwenden URLLoader zum Lesen von Daten aus einer der Domänen, die eine crossdomain.xml-Datei enthalten, und Sie rufen loadPolicyFile zum Vorladen von crossdomain.xml auf, besteht die Möglichkeit, dass der Ladevorgang ebenfalls fehlschlägt von Problemen mit der Netzwerkverbindung oder von einem ausgefallenen Server oder von Sonneneruptionen. Wenn Sie URLLoader einrichten, können Sie einen Ereignis-Listener für SecurityErrorEvent.SECURITY_ERROR hinzufügen. Im geraden Listener können Sie versuchen, die Richtliniendatei erneut zu laden. Die Policy-Dateien werden jedoch zwischengespeichert, auch wenn sie nicht geladen werden können (danke, dass Sie Adobe verwenden), daher müssen Sie einen Cache-Busting-Abfrageparameter hinzufügen.

Hier ist ein einfaches Beispiel, wie das funktionieren würde:

%Vor%

In der Praxis möchten Sie wahrscheinlich die Anzahl der Wiederholungen begrenzen und möglicherweise eine exponentielle Verzögerung ausführen, wenn es sich tatsächlich um ein Problem mit der Netzwerkverbindung und nicht nur um einen toten Server handelt, der nicht ordnungsgemäß von einem Lastenausgleichsmodul behandelt wird.

    
pcardune 31.10.2011, 02:05
quelle
0

Meine Tests haben gezeigt, dass es etwa alle 10 Sekunden wiederholt wird. Daher sollte es möglich sein, eine Fehlermeldung anzuzeigen und es nach einigen Sekunden erneut zu versuchen.

    
Jonatan Hedborg 03.10.2011 08:15
quelle