Wie kann ich Abfragezeichenfolgen in meiner statischen Amazon S3-Website abrufen?

8

Ich hosste eine statische Website auf Amazon S3. Ein Teil meines clientseitigen Javascript analysiert die Abfragezeichenfolgen, um das HTML zu steuern. Das funktioniert lokal gut, aber in der S3-gehosteten Version scheinen die Abfragezeichenfolgen aus der Anfrage gelöscht zu werden.

Meine Motivation für die Verwendung von Abfragezeichenfolgen ist, dass ich in der Lage sein soll, den Status zwischen den Seiten basierend auf dem, was der Benutzer auf der vorherigen Seite getan hat, zu übergeben.

Ist dieser Ansatz möglich? Habe ich die "statische" Anforderung für S3 statische Websites verletzt?

Ich kann anscheinend keine allgemeinen Abfragezeichenfolgen in den S3-Dokumenten finden, abgesehen von Authentifizierungs-Informationen , von denen ich glaube, dass sie mein Problem nicht lösen.

    
scott_ri 23.12.2013, 21:16
quelle

2 Antworten

16

Wenn Sie Indexdokumente verwenden, wo ...

%Vor%

... zeigt das Dokument tatsächlich in foo/index.html an. Ihre Abhilfe besteht darin, die Umleitung zu vermeiden, die S3 vor dem Anzeigen der Indexseite ausführt.

Bei einem Link, der auf die Seite bei /foo verweist, sollten Sie stattdessen den Link erstellen, der auf /foo/ verweist (mit der Abfragezeichenfolge nach dem abschließenden Schrägstrich; kann seltsam aussehen, ist aber ziemlich gültig). Wenn Ihr Browser eine Seite anfordert, die zu einem Indexdokument führt, aber nicht mit einem abschließenden Schrägstrich endet, sendet S3 eine Weiterleitung, sodass Ihr Browser am Ende der URL einen abschließenden Schrägstrich hat. Wenn dies nicht der Fall ist, verweisen relative Links auf dieser Seite auf den falschen Pfad.

Das Problem, das dem Problem zugrunde liegt, besteht darin, dass, wenn S3 diese Weiterleitung von /foo nach /foo/ sendet, die Abfragezeichenfolge entfernt wird. Sie mussten es nicht so entwerfen, aber das taten sie, und es scheint keine Einstellung zu geben, die dieses Verhalten verändert.

Aber wenn Ihr Link direkt auf /foo/?some_thing=here&something_else=too zeigt, anstatt auf /foo?some_thing=here&something_else=too zu zeigen (kein abschließender Schrägstrich vor dem ? ), wird die Umleitung vermieden und Ihre Abfrage-Strings sollten intakt bleiben.

    
Michael - sqlbot 24.12.2013, 15:19
quelle
5

Sie könnten zur Verwendung eines Anchor / Hash anstelle einer Abfragezeichenfolge wechseln. Zum Beispiel statt

%Vor%

könnten Sie verwenden:

%Vor%

Der große Unterschied zwischen einem Anchor / Hash und einer Abfragezeichenfolge besteht darin, dass die Abfragezeichenfolge an den Server gesendet wird und der Anker / Hash nicht. Da Sie S3 für das statische Hosting verwenden, ist es in Ihrem Fall nicht erforderlich, dass die Abfragezeichenfolge an den Server gesendet wird.

In Javascript können Sie den Wert des Anchor / Hash-Strings mit:

abrufen %Vor%     
d2vid 23.12.2013 22:33
quelle