Blobstore上传重定向到错误的模块

Jon*_*off 10 google-app-engine go blobstore app-engine-modules gae-module

问题

使用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被中继回用户的浏览器并插入到actiona中<form>.
  6. 用户POST向URL 提交多部分请求
  7. 无论处理URL(一些非用户空间appengine处理程序),尝试重定向回 /upload/success

这是事情变得奇怪的地方.在开发中,服务器重定向到模块A中的 "/ upload/success" .在生产中,服务器重定向到主模块,我们可以称之为现在.我可以告诉这种情况正在发生,因为我404在我的Web控制台中获得了一个日志表明正在向模块B发出请求.我甚至已经明确地将主机名作为成功路径的一部分传递(步骤#3),但是没有效果.

当前解决方案(不理想)

似乎我唯一的办法是在模块B中定义一个处理程序来处理请求,就像模块A那样.由于goapp架构将所有模块组合在一起,这不是世界上最差的权衡,但鉴于模块应该是垂直独立的,它在语义上是错误的.如果有人知道如何解决这个问题,我将不得不承担责任.现在,我将采取上述方法.