Мое представление Django генерирует PDF через pycairo в ответ на POST (я не перенаправляю в ответ на POST). Когда я POST использую настольные браузеры, я могу сохранять и / или просматривать PDF с помощью Adobe Reader или Document Viewer. Однако, когда я отправляю POST через мои браузеры Android, Adobe PDF Reader и средства просмотра ThinkFree сообщают, что файл поврежден.
Просматривая файлы журналов на моем сервере приложений, оба браузера Android отправляют сообщение POST, за которым сразу следует GET для той же страницы:
[24/Sep/2010:22:49:20 -0500] "POST /courses/blank/create/ HTTP/1.1" 200 8895 "http://example.com/create/" "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; SPH-D700 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"
[24/Sep/2010:22:49:20 -0500] "GET /courses/blank/create/ HTTP/1.1" 200 9432 "-" "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; SPH-D700 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"
Когда я смотрю на файл, сохраненный в телефоне, это HTML-код запроса GET.
Вот скелет зрения:
def create(request, template="blankgrids/create.html"):
if request.method == 'POST':
form = BlankGridForm(request.POST)
if form.is_valid():
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=example.pdf'
# snipped pycairo code that writes directly into response
return response
else:
form = BlankGridForm()
return render_to_response(template,
{'form': form},
context_instance=RequestContext(request))
Так что мне интересно, что может быть причиной того, что браузеры Android выполняют GET?