Загрузка из Blobstore перенаправляет в неправильный модуль

Эта проблема

При загрузке файла с помощью Go Blobstore API путь успеха перенаправляется в неправильный модуль appengine. Вот более наглядное описание проблемы:

  1. Пользователь попадает на страницу загрузки модуля A: http://A.my-appengine-app.com/upload
  2. Браузер пользователя делает запрос в модуль для сеанса загрузки: http://A.my-appengine-app.com/upload/session
  3. Модуль A определяет обработчик для /upload/session который запускает следующий код Go: url, err := blobstore.UploadURL(c, "/upload/success")
  4. Метод возвращает URL, похожий на: http://A.my-appengine-app.com/_ah/upload/[some long hash]/
  5. Этот URL-адрес возвращается в браузер пользователя и вставляется в action из <form>,
  6. Пользователь отправляет несколько частей POST запрос к URL
  7. Независимо от того, что обрабатывает URL (некоторый обработчик приложения не из пользовательского пространства), он пытается перенаправить обратно на /upload/success

Здесь вещи становятся странными. В процессе разработки сервер перенаправляет на "/upload/success" в модуле A. В производственном процессе сервер перенаправляет на основной модуль, который мы можем назвать B на данный момент. Я могу сказать, что это происходит, потому что я получаю 404 в моей веб-консоли и журналы указывают, что запрос делается к модулю B. Я даже зашел так далеко, что явно передал имя хоста как часть пути успеха (шаг № 3), но безрезультатно.

Текущее решение (не идеально)

Кажется, у меня есть единственное решение - определить обработчик в модуле B для обработки запроса так, как это сделал бы модуль A. Поскольку архитектура goapp объединяет все модули вместе, это не худший компромисс в мире, но это семантически неверно, учитывая, что модули должны быть вертикально независимыми. Если у кого-то есть идеи, как обойти это, я был бы обязан. Сейчас я возьму вышеупомянутый подход.

0 ответов

Другие вопросы по тегам