我想从客户端应用程序获取私有CKAN资源(CSV文件),避免使用api密钥,即使用用户名和密码(我已经检查过将api密钥添加为标头,它运行良好)。
我一直在寻找其他类似问题,我发现this(可能是最终答案)或this(使用Python)。对不起,如果这个问题已在别处得到解答。但是,我想尝试避免服务器端解决方案,所以我一直在使用jQuery尝试以下请求:
*其中pattern
函数用于替换输入字符串中的参数,login
用于存储用户输入的对象。
$.ajax({
url: pattern('{ckanUrl}/dataset/{pkg}/resource/{resource}/download/{fileName}', dataset),
type: 'GET',
username: login.username,
password: login.password,
data: {
//login: login.username,
//password: login.password,
cache: true
},
dataType: 'text'
})
.done(function(res) {
console.log('success!!');
})
.fail(function(res) {
console.log('fail!!');
});
pattern
函数接受dataset
对象,并将其属性作为参数添加到给定字符串中。 e.g:
var dataset = {
ckanUrl: 'https://myckan.org',
pkg: 'packageId',
resource: 'resourceId',
fileName: 'myFile.csv'
};
pattern('{ckanUrl}/dataset/{pkg}/resource/{resource}/download/{fileName}', dataset)
// "https://myckan.org/dataset/packageId/resource/resourceId/download/myFile.csv"
我还尝试在数据属性中添加凭据(上面评论过),但没有成功。在任何情况下我都会遇到404 (Not found)
错误。
我错过了什么或CKAN无法做到这一点?
非常感谢!