【发布时间】:2013-02-13 12:19:52
【问题描述】:
我们的产品是电子书,通过用于 WordPress 的 http://www.tipsandtricks-hq.com/ eStore 插件以 .epub 和 .mobi 格式提供,该插件会生成加密的下载链接。
大约 5 天前突然出现问题,之前运行正常大约三个月
当客户通过下载链接下载购买的产品时,所有 .epub 文件都会损坏,并且在尝试将 ePub 导入库时,Adobe Digital Editions 会出错
所有 .mobi 文件在下载并加载到 Kindle 时都会损坏,Kindle 会出现类似错误
我们尝试关闭 Google 网址缩短器,错误
我们用IE、Chrome和Firefox测试过链接,错误
我们在没有加密链接的情况下进行了测试,通过浏览器中的直接链接下载文件,它们工作正常,没有错误
我们学到了什么:
我们已经测试过使用 FTP 以 ASCII 和二进制模式下载...使用 ASCII 时,我们会遇到与使用加密下载链接相同的错误
用FTP传输的文件用ASCII和Binary后大小相同,但运行hash检查显示内容不同
我们正在使用 FileZilla 在 PC 和 Mac 上通过 FTP 进行测试,但是错误只发生在 PC 上
所以,我们假设这个问题与文件传输类型和电脑有关
在 /home/foo/bar/wp-content/plugins/wp-cart-for-digital-products/download.php 我们看到 header("Content-Transfer-Encoding: binary");所以我们假设在使用加密链接时强制使用二进制
加密链接字符串中是否可能有一些字符强制使用 ASCII?以下是加密链接的示例:
https://fu.com/bar/download.php?file=LRtro6WQMN12ip%2BEcL0TYS8sMZmSKOlkRedVCZyfACsqSllzCAjDp%2FZJyfQ2oq0ZP6vg1EMrR%2FOFC4B3wGDHl3N0u0sulcBhIfkOJ0C0UQh6
这里是http头:
Status: HTTP/1.1 200 OK
Date: Wed, 27 Feb 2013 14:55:47 GMT
Server: Apache
X-Powered-By: PHP/5.3.17
Set-Cookie: PHPSESSID=7d61c9dd6ecbd321bea8cffg4a25d5e8; path=/
Expires: 0
Cache-Control: public
Pragma: public
X-CF-Powered-By: WP 1.3.9
Content-Description: File Transfer
Content-Disposition: attachment; filename="Some-File-Name-Which-Was-Replaced.epub"
Content-Transfer-Encoding: binary
Content-Length: 5088032
Connection: close
Content-Type: application/epub+zip
还有什么可能导致这种情况?我们的服务器会在 .htaccess 或 apache 配置设置中强制使用 ASCII 吗?
非常感谢
【问题讨论】:
-
我们刚刚尝试使用二进制编辑器查看损坏文件与工作文件,发现损坏文件的开头有垃圾数据。 (根据这里的提示:stackoverflow.com/questions/4465135/…)
-
我们把二进制转成ascii,发现文件开头的垃圾数据是:ï°¿哪些是 HTML 代码:¿ = 倒问号。 ° = 度数符号。 ï = 带分音符号的拉丁文小写字母 i。现在我们正试图弄清楚这到底是从哪里来的! :) 来自 eStore 插件?从服务器?来自 Windows(因为它只发生在 Windows 上)?
标签: php wordpress binary download ascii