【问题标题】:Android 2.2 and 2.3 PDF download via HTTPS seems broken通过 HTTPS 下载的 Android 2.2 和 2.3 PDF 似乎已损坏
【发布时间】:2012-03-11 16:06:33
【问题描述】:

我一直在为将 PDF 下载到移动设备而发疯。这是下一个疯狂,可在 Android 2.2 和 2.3 上观察到。我无法在 iPhone 或其他设备上重现此问题,无论是在 Firefox 还是其他桌面浏览器上。

我正在通过 HTTP 下载 PDF,它运行良好。然后我通过 HTTPS 下载相同的 PDF 并且下载没有完成(并且文件名丢失):

我正在使用这些 HTTP 标头(以及其他与此处无关的标头):

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

将Content-Disposition 更改为inline 或完全删除它也无济于事。删除Content-Type 将导致在浏览器窗口中显示原始二进制数据。

注意:我已经发现了a problem related to untrusted SSL certificates,但这似乎不是唯一的问题。所以我真的在寻找另一种解释。

欢迎任何想法!

【问题讨论】:

  • 如果签名者受信任,则证书受信任。设备信任证书的可信根授权者吗?
  • 我在答案中提到证书不受信任。但这并不重要,因为 a) 用户可以明确接受不受信任的证书,b) 这不应该影响下载
  • 关于这个问题的更多信息?我在通过 HTTPS 下载 PDF 文件时遇到了完全相同的问题,并且仅在使用 android 下载管理器(本机浏览器、Dolphin 浏览器)的浏览器中出现。我尝试了各种不同的内容类型,包括 aplication/octet-stream 和 aplication/pdf。
  • @BojanaPopovska:不幸的是,我没有听到太多关于我在回答中提到的两张票的修复方向。你可以在那里添加你的 cmets,也许还有复制说明,希望最好!

标签: android pdf https webkit download


【解决方案1】:

除了证书的有效性之外,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

【讨论】:

    【解决方案2】:

    与往常一样,经过一番努力后,有一份关于谷歌代码的古老错误报告,其中包含许多沮丧的开发人员 cmets...这里有两个与此问题相关的未解决问题:

    似乎使用带有不受信任证书的 SSL 下载 PDF(在我的测试环境中就是这种情况)并不完全符合我提到的症状

    更新:这只是一个问题。但它似乎不是唯一的

    更新:事实上,这里有一些关于整件事情的权威信息,表明当时Content-Disposition 实施不佳和指定,这解释了在通过 HTTP 实现下载时遇到的许多问题:

    http://greenbytes.de/tech/tc2231

    【讨论】:

      【解决方案3】:

      目前无法对此进行测试,因为我没有在任何方便的地方运行 https 服务器,但是发送带有标头的 Content-Type: application/octet-stream 有什么不同吗?

      显然,根据您的情况和要求,这可能不是一个选项。除此之外,请尝试使用有效的 SSL 证书!

      【讨论】:

      • 你好。正如我所提到的,SSL 证书的有效性似乎并不是唯一的问题。我试过各种Content-Type,包括你提到的那个
      猜你喜欢
      • 2013-05-23
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2015-04-23
      • 1970-01-01
      相关资源
      最近更新 更多