详细问题描述
[内容]
plus.downloader会对下载URL进行URLDecode,并最终导致下载失败。
用plus.downloader下载阿里云OSS的鉴权后URL,其中的Signature是URLEncode之后的,发现下载失败,但用浏览器是下载成功的,抓包后发现是由于plus.downloader对下载URL做了解码导致的。
而且实测这个decode并不是一个完整的urldecode实现,比如%25就不会被decode掉。
重现步骤
[步骤]
可使用如下代码验证:
function createDownload(url) {
var dtask = plus.downloader.createDownload(url, {}, function ( d, status ) {
// 下载完成
if ( status == 200 ) {
alert( "Download success: " + d.filename );
} else {
alert( "Download failed: " + status );
}
});
//dtask.addEventListener( "statechanged", onStateChanged, false );
dtask.start();
}
createDownload('http://www.baidu.com/%2B%3D?x=%2B%3D')
[结果]
服务器收到的url实际为 http://www.baidu.com/+=?x=+=
[期望]
服务器收到的url为 http://www.baidu.com/%2B%3D?x=%2B%3D
运行环境
[系统版本]
iOS10.3
[浏览器版本]
[IDE版本]
HBuilder 8.0.1.201702172043
[mui版本]
附件
[代码片段]
[安装包]
联系方式
[QQ]
[电话]
DCloud_IOS_XTY
能提供个OSS的下载地址吗?
2017-12-12 17:38
DCloud_IOS_XTY
你的文件链接是使用文件分享生成的吗?
2017-12-12 17:44
天逸 (作者)
回复 DCloud_IOS_XTY: http://chaos-test-acl.oss-cn-shanghai.aliyuncs.com/remote.txt?Expires=1513605693&OSSAccessKeyId=TMP.AQHsn_HmeFdUQLi6y-kLF2oGdgV7U2j15XwdRbMTZHKI-eYxf1yloYpeg_biAAAwLAIUcIuw7o0ZiZct22L6uTbETXbkfOMCFDqtteUq-DxrclcC5VrljiTjxOtt&Signature=T8%2BlHuYHAOCFZhcbG1FpSH0KYE4%3D 多谢,多谢
2017-12-18 21:02
天逸 (作者)
回复 DCloud_IOS_XTY:我的是用API生成的,但是分享生成的是一样的,回复里面好像会被隐藏掉,我重新发下
2017-12-18 21:09
天逸 (作者)
2017-12-18 21:09