使用Axios发送GET请求时仅返回图片头而非图片数据可行吗?
用Axios校验图片有效性(仅获取响应头)
完全可以用Axios实现你的需求,不用换其他库——只需要把原来的GET请求换成HEAD请求就行。
HEAD请求的特性就是只返回响应头,不传输响应主体数据,刚好能满足你校验图片是否有效、获取头信息(比如图片大小)的需求,还能避免下载大体积图片,大幅提升测试速度。
修改后的代码如下:
await axios.all(allImagesURLs.map(imageURL => axios.head(imageURL))) .then((responses) => { for (const response of responses) { expect.soft(response.status).toBe(200); // 若需要获取图片大小,直接从响应头读取content-length字段 const imageSize = response.headers['content-length']; if (imageSize) { console.log(`图片大小:${imageSize} 字节`); } } }) .catch(err => { console.log(err); });
补充说明:
- HEAD请求的响应状态码和对应GET请求一致,返回200就说明图片资源存在且可正常访问;
- 响应头里的
content-length字段对应图片的字节大小,直接读取即可; - 个别服务器可能不支持HEAD请求,这种情况可以退而求其次,用GET请求并配置
responseType: 'stream',然后立即取消请求,但HEAD仍是最优方案。
内容的提问来源于stack exchange,提问作者heyooo12
相关产品推荐
相关产品推荐

