我尝试使用Ionic和Cordova构建应用程序,其部分功能是从安全位置上传和下载文件,知道这样的命令在我放置凭据时使用curl工作以用户:传递方式,但在Cordova我使用 $ cordovaFileTransfer 。
所以我的问题是:如何知道上传和下载文件需要进行身份验证,我可以添加我的凭据。
这是我用过的代码:
document.addEventListener('deviceready', function() {
var url = "https://serverlink/thing.txt";
var targetPath = cordova.file.externalRootDirectory + "/cloud/thing.txt";
var trustHosts = true;
var options = {
params: {
// Do i put my credentials here ??
}
};
console.log('before download');
$cordovaFileTransfer.download(url, targetPath, options, trustHosts)
.then(function(result) {
// Success!
console.log("done downloading the file");
}, function(err) {
// Error
console.log('error yaw !!', err);
}, function(progress) {
$timeout(function() {
$scope.downloadProgress = (progress.loaded / progress.total) * 100;
});
});
}, false);
所以,我测试了上面的代码,我将我的凭据放在选项对象中的params,但它不起作用。
答案 0 :(得分:0)
我找到了答案,我的资源使用基本授权,所以为了发送我需要进行身份验证的任何请求,我通过执行以下操作来管理:
authReader = function(username, password) {
var tok = username + ':' + password;
var hash = btoa(tok);
return "Basic " + hash;
};
var options = {
headers : {
'Authorization': authHeaderValue('user', 'pass')
}
}
$cordovaFileTransfer.download(url, targetPath, options, trustHosts)
.then(function(result) {
// Success!
console.log("done downloading the file");
}, function(err) {
// Error
console.log('error yaw !!', err);
}, function(progress) {
$timeout(function() {
$scope.downloadProgress = (progress.loaded / progress.total) * 100;
});
});
到目前为止,我使用基本授权设置了标头(在Base64中进行了哈希处理 并直接发送请求并从我的安全服务器上取回我的文件。
对于我的问题,这基本上是解决方案。