javascript - 七牛fetch接口抓取第三方资源(网络图片),Js写ajax请求返回error错误信息总是“Unauthorized”
问题描述
fetch请求授权失败了不知道是path拼接错误还是写的ajax请求有错误。
//管理凭证function genManageToken(accessKey, secretKey, pathAndQuery, body) {
var str = pathAndQuery + 'n' + body;var hash = CryptoJS.HmacSHA1(str, secretKey);var encodedSign = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(hash));return accessKey + ':' + encodedSign;
}
var fetchImg = function(picUrl) {
// 通过fetch进行远程图片抓取var accessKey = 'AK';var secretKey = 'SK';//网络图片picurl上传到七牛var srcUrl = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(picUrl));var bucket = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse('bucket'));var path = '/fetch/' + srcUrl + '/to/' + bucket;var fetchUrl = 'http://iovip.qbox.me/' + path;mui.ajax(fetchUrl, { dataType: ’json’, //服务器返回json格式数据 type: ’post’, //HTTP请求类型 timeout: 10000, //超时时间设置为10秒; headers: {’Authorization’: 'QBox ' + genManageToken(accessKey, secretKey, path, ''),’Content-Type’: ’application/json’, }, success: function(data) {//服务器返回响应,根据响应结果,分析是否登录成功;data = JSON.stringify(data);data = eval('(' + data + ')');//输出响应成功key值console.log(data[’key’]); }, error: function(xhr, type, errorThrown) {//异常处理;console.log(errorThrown); }});
}
问题解答
回答1:function safe64(base64) {
base64 = base64.replace(/+/g, '-');base64 = base64.replace(///g, '_');return base64;
}function genManageToken(accessKey, secretKey, pathAndQuery, body) {
var str = pathAndQuery + 'n' + body;var hash = CryptoJS.HmacSHA1(str, secretKey); var encodedSign = safe64(hash.toString(CryptoJS.enc.Base64));
}编码问题已解决。
