我们的产品是电子书,通过http://www.tipsandtricks-hq.com/eStore插件为WordPress提供。epub和。mobi格式,生成加密下载链接。
-
问题是5天前突然出现的,之前正常工作了大约三个月
-
当客户通过下载链接下载他们的购买时,所有。ePub文件都会损坏,Adobe数字版本在尝试将ePub导入到库时给出错误
-
所有。mobi文件在下载并加载到Kindle时都会损坏,Kindle给出类似的错误
-
我们尝试关闭Google URL缩短器,错误
-
我们已经测试了IE, Chrome和Firefox的链接,错误
-
我们在没有加密链接的情况下进行了测试,通过在浏览器中直接链接下载文件,它们工作正常,没有错误
我们学到了什么:
-
我们已经测试了使用FTP在ASCII和二进制模式下下载…使用ASCII,我们得到与使用加密下载链接相同的错误
-
使用FTP传输的文件在使用ASCII和二进制后大小相同,但运行哈希检查显示内容不同
-
我们正在使用FileZilla通过FTP在PC和Mac上测试,但是错误只发生在PC上
-
所以,我们假设这个问题与文件传输类型和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
还有什么可能导致这种情况?我们的服务器可以强制ASCII在。htaccess或apache配置设置?
非常感谢
我们的一个程序员在编辑器中使用了错误的字符编码。我们需要用UTF-8(BOM off)来处理PHP文件,否则空格或换行符会以某种方式干扰文件的完整性:
PHP文件中的UTF-8 BOM签名
WordPress' functions.php: if ($bom != b"'xEF'xBB'xBF")
我们的罪魁祸首HTML字符代码ï°¿
,我们从十六进制值解码:EF BB BF
这是出现在损坏的。epub文件开头的垃圾数据。
functions.php每次在WordPress中运行时总是输出这些垃圾数据。
很高兴我们终于找到了问题的根源,是我们疯了!哈haa ! !
和平和;祝你编码快乐