Wie kann ich get-query-strings in meine Amazon S3-statische website?
Ich bin hosting eine statische website auf Amazon S3. Einige meiner client-side javascript parst die query-strings zur Steuerung der HTML. Dies funktioniert lokal, aber auf dem S3-hosted-version, die query-strings zu bekommen scheinen aus der Anforderung entfallen.
Meine motivation für die Verwendung von query-strings ist, dass ich möchte in der Lage sein, um pass state zwischen den Seiten auf, was der Benutzer hat auf der vorherigen Seite.
Ist diese Vorgehensweise möglich? Habe ich gegen das "statische" Voraussetzung für die S3 statische Webseiten?
Ich kann nicht scheinen, um herauszufinden, jede Erwähnung der Allgemeinen query-strings in der S3-docs, abgesehen von der Authentifizierung Zeug, die ich glaube nicht, dass löst mein problem.
- Ist der querystring vorhanden in dem link, den Sie klicken Sie auf gehen Sie zu "nächste" Seite auf Ihrer Website (weil der Code Generierung), dann verschwindet aus der Adressleiste, bevor die Seite geladen wird? Und, sind Sie mit S3-Dokumente indizieren?
- ja, das ist richtig. Ich weiß nicht, was S3-index-Dokumente sind, so dass ich vermute, ich bin nicht mit Ihnen. Ich folgte einfach die Anleitung für den Aufbau einer statischen website auf S3.
- Index-Dokument:
http://example.com/foo
gibt das html-Dokument anhttp://example.com/foo/index.html
. Tun Sie das? - Oh, ja, Tue ich das.
- Cross-post... stackoverflow.com/questions/30775068/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Dokumente indizieren, wo diese...
...eigentlich zeigt das Dokument an
foo/index.html
dann ist dein workaround wird sein, vermeiden Sie die Umleitung, die S3 hat vor der Anzeige der index-Seite.Für einen link auf die Seite bei
/foo
sollten Sie tatsächlich erstellen die Verknüpfung zu/foo/
statt (mit dem query-string nach dem trailing-slash; kann seltsam Aussehen, aber es ist durchaus gültig ist). Dies ist, weil, wenn Ihr browser fordert eine Seite, das Resultat wäre ein index-Dokument, aber nicht in einem nachgestellten Schrägstrich, S3 sendet eine Umleitung, so dass bei Ihrem browser ein trailing slash am Ende der URL. Wenn nicht für dieses, relative links auf dieser Seite verweisen auf den falschen Weg.Das problem hinter dem problem ist, dass beim S3 sendet, die Umleitung von
/foo
zu/foo/
entfernt den Abfrage-string. Sie nicht haben, um das design so, aber das ist, was Sie Taten, und es scheint nicht zu sein, eine Einstellung, die ändert dieses Verhalten.Aber wenn Ihr link verweist direkt auf
/foo/?some_thing=here&something_else=too
statt auf/foo?some_thing=here&something_else=too
(no trailing slash vor der?
), dann wird die Umleitung wird vermieden und Ihren query-strings sollte bleiben intakt.Location
- header, wenn Sie Dokumente indizieren und beinhalten nicht den abschließenden Schrägstrich in der original URL... also mit CloudFront leiten Sie auf S3 würde sich daran nichts ändern. (/foo?bar=1
Umleitungen zu/foo/
eher als/foo/?bar=1
wie erwartet werden könnte, vor dem Rendern das Objektfoo/index.html
).Konnte man mit dem Schalter ein Anker/hash, anstatt einem query-string. Zum Beispiel, anstelle von
den Sie verwenden könnten:
Den großen Unterschied zwischen dem Anker/hash im Vergleich zu einem query-string ist, dass der query-string an den server gesendet wird und der Anker/hash nicht. In Ihrem Fall, da Sie mit S3 für statische hosting, brauchen Sie nicht den query-string an den server sowieso.
In Javascript, können Sie den Wert des Anker/hash-string benutzen: