amn*_*amn 3 iphone safari http mobile-safari ios
我http
在 Node.js中的标准模块之上编写了一个 Web 服务器。对我来说,它像时钟一样工作,用于提供各种 HTML、JavaScript、CSS 和资产内容——自然地构成了我的大部分网页。
当服务被请求一个映射到具有未知扩展名的文件的 URL 时(没有进行 MIME 嗅探),它只是使用带有标头的分块传输编码来提供内容Content-Type: application/octet-stream
,这也一直很好地工作——我偶尔会主持服务器上的各种文件,并且能够在不受用户代理干扰的情况下下载这些文件,正如我所期望的那样application/octet-stream
。
然而,今天,我尝试在 iPhone 4S 上运行 iOS 9.3.5 的 Safari 移动浏览器上下载,但那个东西只是拒绝从有效 URL 下载,提醒我:
下载失败。Safari 无法下载此文件。
从那以后,我一直试图添加Content-Disposition: attachment
并且也Content-Disposition: attachment; filename="foobar"
很好地衡量,但它仍然拒绝。
一个名为的文件就是random
这种情况,其中填充了 1000 个随机字节。我的主机头是(Content-Disposition
是可选的,如上所述):
HTTP/1.1 200 OK
Host: example.com
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="foobar"
Date: Mon, 01 May 2017 13:48:37 GMT
Connection: keep-alive
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)
作为记录,Android 6.x 手机也按预期运行(除了我的 Windows 10 x86_64 主机上的 Firefox 53),可以顺利从 URL 下载。
这里的 Safari 怎么了?
是的,您可以在 iOS 上使用 Safari 下载的唯一内容是图像。这是因为 iOS 不会向用户公开文件结构(将文件下载到用户永远看不到的地方没有任何意义),它与防 Web 攻击无关。Android 上的浏览器可以下载任意文件,因为用户可以看到 Android 文件结构。
这是之前关于苹果社区的讨论:https : //discussions.apple.com/thread/3697948?start=0&tstart=0
您唯一可以从 Safari 保存到 iPhone 的东西就是图片。没有别的,也没有下载。
将来有可能下载 iOS 支持的视频文件,但不太可能下载application/octet-stream
MIME 类型的任意文件。
归档时间: |
|
查看次数: |
6589 次 |
最近记录: |