2016-06-24 10 views
4

Ich versuche, die Umleitung in AWS API-Gateway arbeiten. Ich habe die Methode response so konfiguriert, dass Location im Header und in der Integration Response enthalten ist. Ich setze den Parameter wie folgt: Location = integration.response.body.location. Wenn ich jedoch die API ausprobiere, wird der Text für den Speicherort auf der API-Seite nur angezeigt, anstatt mich an den Speicherort umzuleiten. Ist das schon mal jemand begegnet?Umleiten von AWS API-Gateway mit Antwort 302

Die angezeigte Zeichenfolge ist eigentlich der richtige Speicherort, aber die API leitet mich nicht zu dieser URL um.

+0

Wohin möchten Sie eigentlich umleiten? Ist es etwas von aws-Lambda? – Andremoniy

+0

@Andremoniy Die erste Seite stammt von S3, was ein Formular ist. Nach dem Senden ruft es eine AWS-Lambda-Funktion über API auf, und wenn die API antwortet, möchte ich zu einer anderen HTML-Datei im selben Bucket umleiten. Ich habe das Problem im Moment isoliert. Wenn ich den tatsächlichen Ort als String in {} setze, funktioniert die Umleitung. Wenn ich das JSON-Objekt jedoch in einer Variablen speichere und diese Variable im Callback übergebe, funktioniert die Weiterleitung nicht. –

Antwort

0

Sind Sie sicher, dass der API-Endpunkt 302 zurückgibt?

Stellen Sie sicher, dass Sie keine anderen als die für Ihre Methode definierten Antwortcodes 2xx oder 3xx haben. Sie können nur eine "erfolgreiche" Antwortcodezuordnung haben. 2xx- und 3xx-Codes werden alle als Erfolgscodes betrachtet.

+0

Ja, ich bin ziemlich sicher, dass ich eine Antwort von 302 bekomme, weil die angezeigte Zeichenfolge der Ort ist, an den ich umleiten wollte. Es sieht so aus, als würde es nicht funktionieren, wenn ich den Wert in einer Variablen ablege und dann die Variable als Teil des Callbacks übergebe. Wenn ich es direkt in den Rückruf bringe, klappt es ... –

0

Ok, ich habe das Problem gefunden. Die Variable, in der ich den Speicherort gespeichert habe, wird als Zeichenfolge anstelle eines Objekts definiert, weshalb die Webseite sie als Text anzeigt. Es wird jetzt auf die Seite umgeleitet.

0

Zunächst möchten Sie eine Methodenantwort für den Header "location" erstellen. Dann möchten Sie den Standort-Header-Wert aus der Antwort Ihres Lambda zuordnen. In Node.js Runtime können Sie es auf integration.response.body.errorType zuordnen. Auf diese Weise werden Sie, indem Sie umleiten können:

// Returns 302 or 301 
var err = new Error("HandlerDemo.ResponseFound Redirection: Resource found elsewhere"); 
err.name = "http://a-different-uri"; 
context.done(err, {}); 

Für die volle writeup finden Sie unter: https://aws.amazon.com/blogs/compute/redirection-in-a-serverless-api-with-aws-lambda-and-amazon-api-gateway/