Edge浏览器图形验证码无法正常显示

在Edge浏览器中遇到图形验证码无法正常显示的问题,图片通过io流传递到前端img标签无法正常工作。为了解决这个问题,后端采用Base64加密图片流,转化为字符串传递给前端,前端设置img标签的src属性,这样问题得到了解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
其他浏览器显示正常。

			//生成验证码文本
            String capText = captchaProducer.createText();
            logger.info("[{}]生成验证码文本===={}",mobile,capText);
            //利用生成的字符串构建图片
            BufferedImage bi = captchaProducer.createImage(capText);
            ServletOutputStream out = response.getOutputStream();
            ImageIO.write(bi, "jpg", out);
            try {
                out.flush();
            } finally {
                out.close();
            }

io流的形式将图片传到前端用img接收,在Edge浏览器显示

<img src="/resource/images/pic_login_code.jpg" onclick="getCaptcha();" width="80" height="32"> 

修改处理方案:

			//生成验证码文本
            String capText = captchaProducer.createText();
            logger.info("[{}]生成验证码文本===={}",mobile,capText);
            //利用生成的字符串构建图片
            BufferedImage bi = captchaProducer.createImage(capText);
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ImageIO.write(bi, "png", out);
            String result = Constants.IMG_BASE64_PREFIX + Base64.getEncoder().encodeToString(out.toByteArray());

后端将图片流用Base64加密生成字符串,在前端用img src接收,然后问题解决

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMmFhYWUwOS01N2VmLWE2NDItYWFjZS05ZjcyYjU0OTYyN2MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUIxOTMxRUFCMjgxMTFFOEE4MjA5RTAwMDI1MUQ0MzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUIxOTMxRTlCMjgxMTFFOEE4MjA5RTAwMDI1MUQ0MzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUzMzI3ZDE2LTI3ZTQtNmE0Ny1iM2FmLTVkYzRiNzhhMDQ0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDplMmFhYWUwOS01N2VmLWE2NDItYWFjZS05ZjcyYjU0OTYyN2MiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7KYJRXAAAAhUlEQVR42mL8YQYGBjYg9gDi9wzEAUEg3gHEv5iABCsQmwHxbqgEMZp3Q/WwMQBdIAjEZ/9DwBkonwEHFoSqgavFKUGMZpA4QQWE5IixBa/riPEnXq8RE1h4A5eJgVJAbS9QFIgURSNFCYnipHyCSM3YDDnBCM3O7EDsTkZ2/g0QYAB1zYynyEvFfQAAAABJRU5ErkJggg==
<think>好的,用户的问题是关于解决bwapp高级模式下验证码显示的问题。我需要先理解这个问题的背景和可能的原因。首先,bwapp是一个用于练习的漏洞应用,可能存在配置问题或者环境问题导致验证码无法显示。用户提到是高级模式下的问题,可能需要特定的设置或检查。 接下来,我需要考虑验证码显示的常见原因。通常,验证码生成需要GD库支持,所以可能PHP的GD库没有安装或启用。另外,文件权限问题也可能导致无法生成验证码图片。还有,缓存或浏览器问题有时候也会影响显示,比如浏览器缓存了旧的页面或者JavaScript被禁用。 然后,我应该分步骤给出解决方案。首先检查GD库,可以通过phpinfo()查看是否安装。如果没有,需要安装并启用。接着检查文件权限,确保生成验证码的目录有写入权限。然后查看bwapp的配置,确认高级模式下的相关设置是否正确。还要检查是否有JavaScript错误,因为验证码可能需要JS来动态加载。清除浏览器缓存或尝试不同浏览器也是一个步骤。最后,查看错误日志,可能会有具体的错误信息提示。 另外,用户提供的引用中提到了目录遍历漏洞测试的链接,这可能与bwapp的其他配置有关,但当前问题集中在验证码显示上,可能需要确保相关路径正确,没有因为安全设置而阻止了验证码图片的生成。 最后,生成相关问题,帮助用户进一步排查或理解相关的问题,比如GD库安装方法,文件权限设置,或者bwapp的其他配置问题。</think>### BWAPP高级模式验证码显示解决方案 #### 1. 验证GD库支持 - 验证码生成依赖PHP的GD图形库 - 在PHP环境中执行`phpinfo()`查看GD库状态 - 安装命令(Ubuntu): ```bash sudo apt-get install php-gd sudo systemctl restart apache2 ``` 引用[^2]中提到的目录遍历漏洞测试工具同样依赖环境配置 #### 2. 检查文件权限 - 确认`/bWAPP/images`目录有写入权限: ```bash chmod 755 /var/www/html/bWAPP/images ``` - 临时测试可设置777权限: ```bash chmod 777 /var/www/html/bWAPP/images ``` #### 3. 配置检查 1. 登录bWAPP后进入`Admin -> Settings` 2. 确认安全等级设置为"medium"或"high" 3. 检查"Enable CAPTCHA"选项已启用 #### 4. 浏览器环境检查 - 清除浏览器缓存强制刷新(Ctrl+F5) - 禁用广告拦截插件 - 测试不同浏览器(Firefox/Chrome/Edge) #### 5. 日志排查 查看PHP错误日志定位具体问题: ```bash tail -f /var/log/apache2/error.log ``` #### 6. 配置文件修复 修改`bWAPP/admin/settings.php`: ```php # 确保验证码路径正确 define("CAPTCHA_IMAGE_PATH", "/bWAPP/images/captcha/"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值