Durch Aktivierung des HTML5-Modus in AngularJS schreibt der Dienst $location
URLs neu, um den Hashbang aus ihnen zu entfernen. Dies ist ein großartiges Feature, das mir bei meiner Anwendung helfen wird, aber es gibt ein Problem mit seinem Fallback auf den Hashbang-Modus. Mein Dienst erfordert Authentifizierung, und ich bin gezwungen, einen externen Authentifizierungsmechanismus aus meiner Anwendung zu verwenden. Wenn ein Nutzer versucht, mit einem Hashbang zu einer URL für meine App zu gelangen, leitet er diese zunächst zur Authentifizierungsseite um (er wird meinen Service nie berühren, wenn er nicht erfolgreich authentifiziert wurde) und leitet sie dann zurück an meine Anwendung. Da das Hash-Tag nur von der Client-Seite aus gesehen wird, wird es bis zum Zeitpunkt, wenn es auf meinen Server trifft, alle Teile der Routen verlassen. Sobald sie authentifiziert sind, können sie die URL erneut eingeben und es wird funktionieren, aber es ist diese eine Anfangszeit, die eine Unterbrechung der Benutzererfahrung verursachen wird.AngularJS HTML5-Modus wird anstelle von Hashbang zu vollständigen Seitenladevorgängen degradiert
Meine Frage ist dann, gibt es einen Weg von $location.html5Mode(true)
zum Fallback der vollen Seite neu laden für un-unterstützende Browser, überspringen die Hashbang-Methode des Routing vollständig in AngularJS?
Der beste Vergleich der verfügbaren Implementierungen dessen, was ich anstrebe, wäre etwas wie das Durchsuchen von Ordnern auf github.com. Wenn der Browser das Umschreiben der URL unterstützt, ohne eine Seitenaktualisierung zu starten, lädt die Seite die erforderlichen Teile asynchron. Wenn der Browser dies nicht unterstützt, wenn ein Benutzer auf einen Ordner klickt, wird eine vollständige Seite aktualisiert. Kann dies mit AngularJS anstelle des Hashbang-Modus erreicht werden?
Haben Sie schon einmal mit einer Lösung dieses Problems kommen? Ich stehe vor einer ähnlichen Situation. – Jonathan