2012-02-21 25 views
12

Tôi sắp sửa tải xuống các tệp PDF cho thiết bị di động. Đây là sự điên rồ tiếp theo, có thể quan sát trên Android 2.2 và 2.3. Tôi không thể tạo lại sự cố này trên iPhone hoặc các thiết bị khác, không phải trên Firefox hoặc các trình duyệt máy tính để bàn khác.Tải xuống bản PDF 2.2 và 2.3 qua HTTPS có vẻ bị hỏng

Tôi đang tải xuống tệp PDF qua HTTP và nó hoạt động tốt. Sau đó, tôi đang tải xuống chính PDF thông qua HTTPS và trình tải xuống không hoàn thành (và tên tập tin bị mất):

Download doesn't finish and filename is lost

Tôi đang sử dụng các tiêu đề HTTP (và những người khác, đó là không thích hợp ở đây) :

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

Thay đổi Content-Disposition thành inline hoặc xóa hoàn toàn không hữu ích. Việc xóa Content-Type sẽ dẫn đến hiển thị dữ liệu nhị phân thô trong cửa sổ trình duyệt.

Lưu ý: Tôi đã phát hiện a problem related to untrusted SSL certificates, nhưng điều đó dường như không phải là vấn đề duy nhất. Vì vậy, tôi thực sự đang tìm kiếm một giải thích khác.

Bất kỳ ý tưởng nào đều được chào đón!

+0

Giấy chứng nhận được tin cậy nếu người ký được tin cậy. Nhà cung cấp Root đáng tin cậy của chứng chỉ được thiết bị tin cậy có phải không? – ggonsalv

+0

Tôi đã đề cập trong câu trả lời rằng chứng chỉ không đáng tin cậy. Nhưng điều này không quan trọng bằng a) người dùng có thể chấp nhận chứng chỉ không đáng tin cậy một cách rõ ràng và b) điều này sẽ không ảnh hưởng đến tải xuống –

+0

Mọi thông tin thêm về vấn đề này? Tôi gặp sự cố tương tự khi tải xuống tệp PDF, qua HTTPS và chỉ được hiển thị trong trình duyệt sử dụng trình quản lý tải xuống Android (trình duyệt gốc, trình duyệt Dolphin). Tôi đã thử nhiều loại nội dung khác nhau, bao gồm aplication/octet-stream và aplication/pdf. –

Trả lời

16

Như mọi khi, sau khi một số khó khăn tìm kiếm có một báo cáo lỗi cổ trên google mã với rất nhiều ý kiến ​​phát triển thất vọng ... Dưới đây là hai vấn đề mở liên quan đến vấn đề này:

Dường như tải xuống tệp PDF bằng SSL với chứng chỉ không đáng tin cậy (trường hợp trong môi trường thử nghiệm của tôi) không hoạt động chính xác với các triệu chứng mà tôi đã đề cập

Cập nhật: Đó chỉ là một vấn đề. Nhưng nó dường như không phải là người duy nhất

Cập nhật: Như một vấn đề của thực tế, đây là một số thông tin có thẩm quyền trên toàn bộ vấn đề, cho thấy rằng vào thời điểm đó, Content-Disposition là kém thực hiện và quy định, điều này giải thích nhiều vấn đề gặp phải khi thực hiện tải qua HTTP:

http://greenbytes.de/tech/tc2231

0

không thể kiểm tra này ngay bây giờ vì tôi không có một máy chủ https chạy bất cứ nơi nào thuận tiện, nhưng không gửi Content-Type: application/octet-stream với các tiêu đề thực hiện bất kỳ sự khác biệt?

Rõ ràng, dựa trên tình hình và yêu cầu của bạn, đây có thể không phải là một tùy chọn. Ngoài ra, hãy thử với một chứng chỉ SSL hợp lệ!

+0

Xin chào. Như tôi đã đề cập, tính hợp lệ của chứng chỉ SSL dường như không phải là vấn đề duy nhất. Và tôi đã thử tất cả các loại 'Content-Type', bao gồm cả loại bạn đã đề cập –

0

Bên cạnh giá trị giấy chứng nhận, thứ tự của chuỗi CA cũng quan trọng đối với trình quản lý tải xuống Android để có thể tải xuống tệp.

Để đảm bảo chứng chỉ trung gian là theo thứ tự thích hợp, bạn có thể chạy lệnh sau:

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

này sẽ trả về một chuỗi độc đáo ra lệnh như:

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

Và không phải như thế này:

0) subject: server 
    issuer: ca1 
1) subject: ca2 
    issuer: ca3 
2) subject: ca1 
    issuer: ca2 
Các vấn đề liên quan