0

我们的产品是电子书,通过 WordPress 的http://www.tipsandtricks-hq.com/ eStore 插件以 .epub 和 .mobi 格式提供,该插件会生成加密的下载链接。

  • 大约 5 天前突然出现问题,之前运行良好大约三个月

  • 当客户通过下载链接下载购买的产品时,所有 .epub 文件都会损坏,并且在尝试将 ePub 导入图书馆时,Adobe Digital Editions 会出错

  • 所有 .mobi 文件在下载然后加载到 Kindle 时都会损坏,Kindle 会出现类似的错误

  • 我们尝试关闭谷歌网址缩短器,错误

  • 我们已经用 IE、Chrome 和 Firefox 测试了链接,错误

  • 我们在没有加密链接的情况下进行了测试,通过浏览器中的直接链接下载文件,它们工作正常,没有错误

我们学到了什么:

  • 我们已经测试了使用 FTP 以 ASCII 和二进制模式下载......使用 ASCII 我们得到与使用加密下载链接相同的错误

  • 使用 FTP 传输的文件使用 ASCII 和 Binary 后大小相同,但运行哈希检查显示内容不同

  • 我们正在使用 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 吗?

非常感谢你

4

1 回答 1

0

我们的一位程序员在他的编辑器中使用了错误的字符编码。我们需要处理带有 UTF-8(BOM 关闭)的 PHP 文件,或者空格或换行符会以某种方式影响文件完整性:

PHP 文件中的 UTF-8 BOM 签名

WordPress的functions.php中的违规代码行:if ($bom != b"\xEF\xBB\xBF")

我们的罪魁祸首 HTML 字符代码ï°¿,我们从 HEX 值解码:EF BB BF 这是出现在损坏的 .epub 文件开头的垃圾数据。

每次在 WordPress 中运行时,functions.php 总是输出这些垃圾数据。

很高兴我们终于找到了问题的根源,这让我们发疯了!哈哈哈!!!

和平与快乐编码给你

于 2013-03-01T15:41:50.897 回答