axios head请求上的403错误

时间:2017-11-14 09:24:08

标签: javascript node.js http request axios

当我从axios向此url提出请求时,会返回403 Forbidden响应。当我发出get请求时,或者当我从其他REST客户端(如邮递员)发出头部请求时,它工作正常。我猜它是因为CloudFront试图拒绝机器人的访问。我可以做一些解决方法,以便我可以让这个请求正常工作吗?

const axios = require('axios')
axios.head('https://images-na.ssl-images-amazon.com/images/I/415%2BC2ZrYqL.jpg')
  .then(console.log)
  .catch(console.log)

1 个答案:

答案 0 :(得分:-1)

我从堆栈代码片段中获取图像时没有遇到任何问题。不确定为什么要获得403

axios.get('https://images-na.ssl-images-amazon.com/images/I/415%2BC2ZrYqL.jpg', {
      responseType: 'arraybuffer'
    })
    .then(response => {
    console.log(response.data);
    var arrayBuffer = response.data;
    var bytes = new Uint8Array(arrayBuffer);

    var image = document.getElementById('image');
    image.src = "data:image/jpg;base64," + encode(bytes);
    });
    
// public method for encoding an Uint8Array to base64
function encode (input) {
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var output = "";
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    var i = 0;

    while (i < input.length) {
        chr1 = input[i++];
        chr2 = i < input.length ? input[i++] : Number.NaN; // Not sure if the index 
        chr3 = i < input.length ? input[i++] : Number.NaN; // checks are needed here

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
            enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
            enc4 = 64;
        }
        output += keyStr.charAt(enc1) + keyStr.charAt(enc2) +
                  keyStr.charAt(enc3) + keyStr.charAt(enc4);
    }
    return output;
}
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<img id="image"/>