Der Blobstore-Upload wird auf das falsche Modul umgeleitet

8

Das Problem

Beim Hochladen einer Datei mithilfe der Go Blobstore-API wird die Erfolgspfad leitet auf das falsche appengine Modul . Hier ist eine visuelle Beschreibung des Problems:

  1. Der Nutzer landet auf der Upload-Seite des Moduls A : http://A.my-appengine-app.com/upload
  2. Der Browser des Benutzers sendet eine Anfrage an das Modul für eine Upload-Sitzung: http://A.my-appengine-app.com/upload/session
  3. Das Modul A definiert einen Handler für /upload/session , der den folgenden Go-Code ausführt: url, err := blobstore.UploadURL(c, "/upload/success")
  4. Die Methode gibt eine URL zurück, ähnlich wie: http://A.my-appengine-app.com/_ah/upload/[some long hash]/
  5. Diese URL wird an den Browser des Benutzers weitergeleitet und in den action eines <form> .
  6. eingefügt
  7. Der Benutzer sendet eine mehrteilige POST -Anforderung an die URL
  8. Was auch immer die URL behandelt (einige Nicht-User-Space-Appengine-Handler), versucht, zurück zu /upload/success umzuleiten.

Hier werden die Dinge merkwürdig. In der Entwicklung wird der Server im Modul A nach "/ upload / success" umgeleitet. In der Produktion leitet der Server zum Hauptmodul um, das wir vorläufig B nennen können. Ich kann sagen, dass dies passiert, weil ich ein 404 in meiner Webkonsole erhalte und die Protokolle anzeigen, dass die Anfrage an das Modul B gestellt wurde. Ich bin sogar so weit gegangen, den Hostnamen explizit als Teil des Erfolgspfads (Schritt # 3), aber ohne Wirkung.

Aktuelle Lösung (nicht ideal)

Es scheint mir, dass ich nur einen Handler im Modul B definieren muss, um die Anfrage als Modul A zu bearbeiten. Da die Goapp-Architektur alle Module zusammenfasst, ist dies nicht der schlechteste Kompromiss in der Welt, aber es ist semantisch falsch, da Module vertikal unabhängig sein sollen. Wenn jemand eine Idee hat, wie man das umgeht, wäre ich verpflichtet. Fürs Erste nehme ich den oben genannten Ansatz.

    
Jonathan Azoff 13.05.2014, 19:38
quelle

0 Antworten