百度编辑器复制微信图片无法保存
作者:半山 发布时间:2023-08-14 17:32:46
00 小编的问题
小编向我们反馈,从微信里复制出来的图片,会被微信屏蔽,无法显示
我们后天采用的是百度编辑器,而且已经做了远程图片本地化,于是检查微信的图片地址。
随便打开一篇微信文章,发现其图片地址如下:
http://mmbiz.qpic.cn/mmbiz_jpg/QeUoMcnKBk25dgQG6qxeicwFbSytxtia6EgAYiakC7JXJhss25yYQKwUC8w8SBibjfQjicAHOn4DoFHrEiaBQWncYFfg/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1
可以看到这个地址和平常的图片地址不一样,没有jpg、png等图片后缀,用浏览器保存后,为webp格式。
01 怀疑本地化代码
检查本地化代码,发现确实有通过后缀判断的地方,但是默认为jpg后缀。
02 检查前端
后端检查没有发现问题,于是又查看前端,打断点,定位到复制图片的js代码段,发现如下:
原来编辑器会保存图片的旧地址,并和后端发回的旧地址比较,如果不相等,不会替换为发回的新地址,这个机制还是比较严谨的。
看上图,发现后端发回的旧地址,对“&”进行了转义,于是旧地址比较不相等,所以没有替换为本地化后的新地址。
03 继续检查后端
问题又回到后端了,找到发回的相关代码,如下:
原来是htmlspecialchars的原因,但是这个又不能去掉,防止xss攻击,那么转义后,再把“&”替换回来,即:
str_replace("&","&",htmlspecialchars($imgUrl,ENT_QUOTES))
上面的ENT_QUOTES 是为了让htmlspecialchars把单引号也转义,更加安全。
来源:https://www.cnblogs.com/xdao/p/ueditor_wechat_image.html


猜你喜欢
- 1、定义标记变量;利用变量值的变化退出循环# 第一种嵌套形式a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]]# i
- 最近产品妹子提出了一个体验issue —— 用 iOS 在手Q阅读书友交流区发表书评时,光标点击总是不好定位到正确的位置:如上图,具体表现是
- (1)函数的分类:内置函数:python内嵌的一些函数。匿名函数:一行代码实现一个函数功能。递归函数自定义函数:根据自己的需求,来进行定义函
- ttk控件的width-height设置tkinter中窗口,框架容器,控件如果不设置宽度高度,则会根据其中的内容自动设置宽度高度框架容器设
- 第五个页面name="changenick.php" <? include &q
- 在实际的工作中会经常会用到to_char()、to_date()函数来对时间、日期进行处理。1、to_char()函数的用法1.1、将时间日
- 今天在工作中遇到了一个问题,需要按时间查询,可是查询出来的结果显示的不正确。举个例子来说,要查找出2007-10-12至2007-10-31
- 一、常用文件函数库1、basename(); -- 返回路径中的文件名部分。string basename ( string $path [
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
- 发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性。很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,
- 如何利用网页弹出各种形式的窗口,我想大家大多都是知道些的,但那种多种多样的弹出式窗口是怎么搞出来的,我们今天就来学习一下:推荐:网页弹出窗口
- 一个小项目自动登录淘宝联盟抓取数据,由于之前在Github上看过类似用Python写的代码因此选择用Python来写,第一次用Python正
- Djangos 内置的模板加载器(在先前的模板加载内幕章节有叙述)通常会满足你的所有的模板加载需求,但是如果你有特殊的加载需求的话,编写自己
- 月份转换到中文Function MonthToCH(TheMonth) Dim mm mm=split("一,
- 前言很多朋友在使用Jetbrains系列软件的时候,可能都会有一个问题,那就是鼠标右击出现的Open Folder as PyCharm P
- 日常会有很多固定报表需要手动更新,本文将利用python实现多线程运行oracle代码,并利用xlwings包和numpy包将结果写入到指定
- 背景Python 作为一门成熟的编程语言,拥有无数优秀的第三方包以方便开发者能够快速地构建应用。一般来说,如果你开发了一个 Python 软
- 原理中文分词,即 Chinese Word Segmentation,即将一个汉字序列进行切分,得到一个个单独的词。表面上看,分词其实就是那
- Vue给数组第一位添加对象数据核心代码如下: this.menuBar.unshift({
- 一、验证计算机服务列表中是否有MySQL服务(1)右击桌面上的计算机图标出现菜单列表选项,选中管理(有多种方式可以打开计算机本地服务列表,这