Я предполагаю, что вы получите это только в режиме локального разработчика. Если это так, вот объяснение (и решение): пользователь вошел в систему на 127.0.0.1, но URL-адрес, возвращенный для новой загрузки в хранилище BLOB-объектов (в локальном режиме), содержит имя компьютера. Как следствие, сеанс прерывается во время перенаправления POST из хранилища больших двоичных объектов в ваш обработчик загрузки, и ваша служба больше не распознает пользователя, вошедшего в систему.
Вот обходной путь. Приведенный ниже метод живет на сервере и может вызываться напрямую через RPC (из приложения GWT) или из сервлета:
public String getNewUploadLink() {
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String url = blobstoreService.createUploadUrl("/myappname/upload");
String modifiedUrl = url.replace("ThisIsMyComputerName", "127.0.0.1");
return modifiedUrl;
}
Вы видите, что он манипулирует URL-адресом перед возвратом его клиенту. Более хорошая версия будет проверять, работает ли служба в режиме разработки или в производственном режиме, а затем действовать соответствующим образом, но она выделяет основную причину этой проблемы, чтобы вы могли продолжить разработку на своем локальном компьютере.