Wie behalte ich das Uri-Fragment in Safari bei Weiterleitung?

Meine GWT / GAE-Anwendung nutzt Aktivitäten und Orte. Um asynchrone Prozesse zu erstellen (z. B. das Zurücksetzen eines Kennworts oder das Überprüfen des Eigentums an einer E-Mail-Adresse), verwende ich ein Muster, in dem der Status einer Aktivität als Token gespeichert und später abgerufen und fortgesetzt werden kann. Um das Status-Token abzurufen, habe ich eine Stelle, die eine erweiterte Token-ID als Argument verwendet, sie aus dem Datenspeicher abruft und dann nach Bedarf zur entsprechenden Stelle navigiert, um die Verarbeitung fortzusetzen. Dadurch kann ich einen Link zu einem bestimmten Status meiner Anwendung erstellen, der per E-Mail verteilt werden kann. zum Beispiel:

http://mydomain.com/#signup:anJlbmZyb0BldGhvc2VkZ2UuY29tfDEzNzQxOTIxNjU3NjQ=

In diesem Fall wird der obige Link an die E-Mail-Adresse gesendet, die während der Anmeldung verwendet wird, und die Anwendung nimmt die durch das Hash-Argument angegebene Anmeldeaktivität wieder auf.

Bis vor kurzem hat alles gut funktioniert, als ich ein SSL-Zertifikat hinzugefügt und https für alle Anforderungen erzwungen habe, indem ich der Datei "web.xml" den folgenden Code hinzugefügt habe:

<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

Diese Einschränkung erzwingt https über (glaube ich) eine 301-Umleitung zu Port 443. Funktioniert wie ein Zauber in Chrome, Firefox und IE .... Safari scheint jedoch das URL-Fragment bei der Umleitung fallen zu lassen ... Ich denke, Sie können mein Problem sehen ! Wie verhindere ich, dass Safari das URL-Fragment löscht ?!

Update 8.1.13

Nach erschöpfenden Recherchen habe ich die Ursache identifiziert, aber ich muss noch eine gute Lösung finden. Eine ausführliche Beschreibung des Problems wurde im w3c-Memo bereitgestelltBehandlung von Fragmentkennungen in umgeleiteten URLs (1999)

Grundsätzlich war http spec unklar, wie URL-Fragmente bei 3xx-Weiterleitungen behandelt werden sollten. und Safari entschied sich, das Fragment zu löschen, wenn es umgeleitet wurde. Siehe den folgenden Bugzilla-Bug:

https://bugs.webkit.org/show_bug.cgi?id=24175

Das gewünschte Verhalten wird durch die Probleme mit dem Benutzeragenten von w3c beschrieben:

http://www.w3.org/TR/cuap#uri

Vor diesem Hintergrund glaube ich, dass dies ein Safari-Thema (Webkit) ist. Ich verstehe nicht, warum andere Webkit-Browser nicht betroffen sind. Gibt es eine bekannte Problemumgehung?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage