谷歌邮箱这串编码处理的编码头有意见,属性直接诡异失踪

日期: 栏目:文章分享 浏览:906 评论:0

2021-07-22

有时候图片会使用 编码来处理,然后再传到前端 img 标签的 src 属性里展示,这里记录遇到的一个问题,就是使用谷歌邮箱来打开图片,使用了 编码处理的图片是展示不出来的,不是找不到配置burpsuit谷歌浏览器证书及HSTS问题处理,是直接 src 属性都会不见了(可以在浏览器上按F12打开控制台查看),经过多次测试发现,谷歌邮箱似乎对 “data:image/jpg;,” 这串 编码处理的编码头有意见,只要带有这个编码头文件,src 属性直接诡异失踪,img 图片不展示。但是使用 编码处理,要在 src 属性里面展示图片,这个编码头文件又是必须要带入的,不带入依然无法展示图片;而国内大部分邮箱是没有这个问题的,都是可以正常展示的,所以怀疑估计是谷歌邮箱不兼容这种编码方式吧。

解决方法:

传奇万能登陆器配置器_配置burpsuit谷歌浏览器证书及HSTS问题处理_第一登陆器配置器

后台取到 编码的文件后,直接在后台处理成流文件,再写给前端浏览器展示,即可避开在谷歌邮箱里面直接读取 编码不兼容的问题。

代码:

注意:谷歌邮箱要求比较严格配置burpsuit谷歌浏览器证书及HSTS问题处理,路径必须用 “https” 开头才行,同时本地 是测试不了的(自己是这种情况,必须部署到公司服务器上才能正常展示),国内的邮箱使用 “http” 或者 “https” 都可以。

前端

中的 url 写法:

配置burpsuit谷歌浏览器证书及HSTS问题处理_传奇万能登陆器配置器_第一登陆器配置器

谷歌邮箱这串编码处理的编码头有意见,属性直接诡异失踪-第3张图片-Ceacer网络

前端请求方法:

@RequestMapping(value = "ec/findS4Photo", method = RequestMethod.GET)
public void findS4Photo(HttpSession session, HttpServletRequest request, HttpServletResponse response) {
	log.info("==进来处理图片了==");
	
	// ec/fs4?id=5b9f6a1b5a83c1377c32b058
	try {
		String id= request.getParameter("id");
		
		if (StringUtils.isNotBlank(id)) {
        
			//根据id取到Base64编码(自己 Base64 处理的编码存在数据库,所以从数据库中取,自己的存在哪里就从哪里取)           
			String base64Code = qrcodeService.getQrcodeBase64PhotoById(qrcodeId);
			try {
				response.setContentType("image/*"); // 设置返回的文件类型
				OutputStream toClient = response.getOutputStream();
				generateImage(base64Code, toClient);// 核心处理方法
			} catch (Exception ex) {
				System.out.println(ex.toString());
			}
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	log.info("==结束处理图片了==");
}

传奇万能登陆器配置器_第一登陆器配置器_配置burpsuit谷歌浏览器证书及HSTS问题处理

处理方法:

public static boolean generateImage(String base64Code, OutputStream out) {
	// 图像数据为空
        if (base64Code == null || "".equals(base64Code)){
                return false;
        }
	BASE64Decoder decoder = new BASE64Decoder();
	try {
		// Base64解码
		byte[] b = decoder.decodeBuffer(base64Code);
		for (int i = 0; i < b.length; ++i) {
			if (b[i] < 0) {// 调整异常数据
				b[i] += 256;
			}
		}
		// OutputStream out = new FileOutputStream(imgFilePath);
		out.write(b);
		out.flush();
		out.close();
		return true;
	} catch (Exception e) {
		return false;
	}
}

最后稍微提一下:前端 url 路径由于直接访问后台,可以做一下加密处理,包括传的参数 id 。如果有需要的话。

传奇万能登陆器配置器_第一登陆器配置器_配置burpsuit谷歌浏览器证书及HSTS问题处理

分类:

技术点:

相关文章:

标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看