2012-02-21 2 views
12

Я собираюсь сходить с загрузки PDF-файлов на мобильные устройства. Вот следующее безумие, наблюдаемое на Android 2.2 и 2.3. Я не мог воспроизвести эту проблему на iPhone или других устройствах ни на Firefox, ни на других настольных браузерах.Android 2.2 и 2.3 Загрузка PDF через HTTPS кажется сломанной

Я загружаю PDF через HTTP, и он отлично работает. Тогда я загрузив тот же PDF с помощью HTTPS и загрузка не заканчивается (и имя файла теряется):

Download doesn't finish and filename is lost

Я использую эти HTTP-заголовки (и другие, которые не имеют отношения здесь) :

Content-Disposition: attachment; filename="abc.pdf" 
Content-Type: application/pdf 

Изменение Content-Disposition к inline или его удаления полностью не помогает. Удаление Content-Type приведет к отображению необработанных двоичных данных в окне браузера.

Примечание: Я уже обнаружил a problem related to untrusted SSL certificates, но это, похоже, не единственная проблема. Поэтому я действительно ищу еще одно объяснение.

Любые идеи приветствуются!

+0

Сертификат считается доверенным, если доверенное лицо доверено. Являются ли доверенные корневые авторизаторы certifcate доверенными устройством? – ggonsalv

+0

Я упомянул в ответе, что сертификату не доверяют. Но это не имеет значения, так как a) пользователь может принять ненадежные сертификаты явно, и b) это не должно влиять на загрузку –

+0

Любая дополнительная информация по этой проблеме? Я испытываю ту же самую проблему при загрузке PDF-файла через HTTPS, и он проявляется только в браузерах, которые используют диспетчер загрузки Android (собственный браузер, браузер Dolphin). Я пробовал различные типы контента, включая application/octet-stream и application/pdf. –

ответ

16

Как всегда, после того, как некоторые жесткие глядя есть древнее сообщение об ошибке на Google Code с большим количеством разочарованных комментариев разработчиков ... Вот две открытые вопросов, связанные с этой проблемой:

кажется, что загрузка PDF-файлов с использованием SSL с ненадежными сертификатами (что имеет место в моей тестовой среде) не работает именно с симптомами, которые я упомянул

Обновление: Это только проблема. Но это, кажется, не только один

Update: На самом деле, здесь есть некоторая достоверная информация о всей материи, показывая, что в то время, Content-Disposition плохо реализован и конкретизированы, которая объясняет многие проблемы, возникающие при осуществлении загрузки через HTTP:

http://greenbytes.de/tech/tc2231

0

Невозможно проверить это прямо сейчас, как я не сервер HTTPS работает в любом месте удобно, но посылая Content-Type: application/octet-stream с заголовками никакой разницы?

Очевидно, что в зависимости от вашей ситуации и требований, это может быть не вариант. Помимо этого, попробуйте с действительным сертификатом SSL!

+0

Привет. Как я уже упоминал, действительность сертификата SSL не является единственной проблемой. И я пробовал всевозможные «Content-Type», включая тот, который вы упомянули –

0

Помимо срока действия сертификата, заказ цепочки CA также важен для того, чтобы менеджер загрузки Android мог загружать файлы.

Для того, чтобы убедиться, что промежуточные сертификаты в правильном порядке, вы можете запустить следующую команду:

openssl s_client -connect www.google.ch:443 -showcerts | grep ":/[C1]" 

Это должен возвращать хорошо упорядоченную цепь, например:

0) subject: server 
    issuer: ca1 
1) subject: ca1 
    issuer: ca2 
2) subject: ca2 
    issuer: ca3 

И а не что-то вроде этого:

0) subject: server 
    issuer: ca1 
1) subject: ca2 
    issuer: ca3 
2) subject: ca1 
    issuer: ca2 
Смежные вопросы