避免跨域(img 天然支持跨域) 利用空白gif或1x1 px的img是互联网广告或网站监测方面常用的手段,简单、安全、相比PNG/JPG体积小,1px 透明图,对网页内容的影响几乎没有影响,这种请求用在很多地方,比如浏览、点击、热点、心跳、ID颁发等等, 图片请求不占用 Ajax 请求限额 不会阻塞页面加载,影响用户的体验,只要new Image对象就好了,一般情况下也不需要append到DOM中,通过它的onerror和onload事件来检测发送状态。 示例:
英文术语叫:image beacon 在Google 的 Make the Web Faster 的 #Track web traffic in the background 中有提到。
主要应用于只需要向服务器发送数据(日志数据)的场合,且无需服务器有消息体回应。比如收集访问者的统计信息。
一般做法是服务器用一个1x1的gif图片来作为响应,当然这有点浪费服务器资源。因此用header来响应比较合适,目前比较合适的做法是服务器发送"204 No Content",即“服务器成功处理了请求,但不需要返回任何实体内容”。
另外该脚本的位置一般放在页面最后以免阻塞页面渲染,并且一般情况下也不需要append到DOM中。通过它的onerror和onload事件来检测发送状态。
这样做和ajax请求的区别在于: 1.只能是get请求,因此可发送的数据量有限。 2.只关心数据是否发送到服务器,服务器不需要做出消息体响应。并且一般客户端也不需要做出响应。 3.实现了跨域。
@RequestMapping(value = "/1.gif",method = RequestMethod.GET)
@ResponseStatus(value= HttpStatus.NO_CONTENT)
public void putMdtoKafkByGif() {
Map<String,Object> resultMap = ReqUtil.analyseCallbackRequest(request);
NoTraceRequest request = new NoTraceRequest();
System.out.println("新增调用埋点");
try {
org.apache.commons.beanutils.BeanUtils.populate(request,resultMap);
}catch (Exception e) {
log.error("转入失败",e);
}
//return "forward:/static/1.gif";
}
[url get 数组请求](https://blog.csdn.net/yue_hu/article/details/83348036)