2017-06-30 1 views
2

Ich arbeite an der Implementierung eines Service-Arbeiters, der eine App-Shell für bestimmte Routen auf meiner Site zwischenspeichert und bereitstellt.Wie berücksichtigen Sie serverseitige Weiterleitungen in einer App-Shell?

Mir läuft ein Problem darin, dass die Route manchmal (basierend auf einem Abfrageparameter, sagen wir) eine Umleitung auf der Serverseite verursachen kann. Sobald der Benutzer jedoch eine App-Shell erhält, trifft er den Server nie wieder und die Weiterleitungen werden nicht ausgeführt.

Dies scheint ein Problem in App-Shells zu sein. Auf der Suche nach Gedanken und Anleitungen zum Umgang mit solchen Fällen.


Zusätzliche Details zur Klarheit:

  1. Benutzer treffen https://www.example.com
  2. Service-Arbeiter installiert ist, anschließend eine App Schale für die / Route dienen
  3. Einige Zeit später trifft der Benutzer die Site wieder, aber ihr Konto wurde für eine Sicherheitsüberprüfung gekennzeichnet. Normalerweise würde der Server diese Umleitung handhaben und den Benutzer zum Beispiel auf https://www.example.com/account/security
  4. umleiten. Aufgrund der Anwesenheit der App-Shell hat der Server jedoch keine Gelegenheit, eine solche Umleitung durchzuführen.
+0

Wird die Verwendung von https://github.com/GoogleChrome/workbox/issues/631 in einer Produktionsversion von Workbox Ihrem Anwendungsfall zugeordnet? Wir haben geplant, bald eine neue Nebenversion zu schneiden. Oder wenn das Problem, dass Sie nicht sicher sind, wie Sie den Abfrageparameter in Ihre Navigations-URLs einfügen, sobald die App Shell übernimmt? –

+0

@JeffPosnick gerade machen wir manuell in sw-precache, was die obige Änderung uns in der Workbox ermöglichen wird. Aber es gibt immer noch eine offene Frage, wie Sie mit rein serverseitigen Weiterleitungen umgehen, wie zum Beispiel das Lesen aus dem Sitzungsspeicher des Servers und das Weiterleiten basierend auf etwas. – Mike

+0

Die Antwort kann nicht so geschnitten und trocken sein wie "die gleiche Routing-Logik am Frontend implementieren", oder? Wenn dem so ist, scheint es für Nicht-Anwärter ein Problem zu sein, dass Teams wie die unsere riesige Umleitungslogik in ihr serverseitiges Routing eingebaut haben. – Mike

Antwort

0

(Förderung dieser aus dem Kommentarbereich. Es ist nicht die einzig mögliche Ansatz, aber je nachdem, wie gut Sie sind mit der Umleitung Logik über clientseitige JavaScript ausgeführt wird, sollte es erreichen, was Sie beschreiben.)

In diesem Szenario klingt es so, als müsste der Client den Server regelmäßig (etwa bei jeder History-API-Navigation) über einen einfachen fetch() fragen, ob es einen Grund gibt, auf eine spezielle Seite zu gehen. Und wenn der Server ja antwortet und Sie umleiten müssen, können Sie location explizit auf die Sicherheitsüberprüfung-URL setzen, die aus der App-Shell-Navigation auf die schwarze Liste gesetzt werden sollte.

Verwandte Themen