若依-富文本编辑器特殊字符串被过滤的解决办法

使用若依框架的时候,遇到了这个问题,原因是没有在配置文件里配置防止过滤的东西。

若依默认所有的都会过滤脚本,可以在application.yml配置xss.excludes属性排除URL

# 防止XSS攻击
xss: 
  # 过滤开关
  enabled: true
  # 排除链接(多个用逗号分隔)
  excludes: /system/notice/*

这个application.yml文件,可能在你的idea代码里,也可能在你的nacos里gateway的微服务里,我的是后者
排除链接是你的接口路径url (我写的全路径),亲测有效,如下配置
在这里插入图片描述
附:网上很多文章都写的很模糊,没有写具体在哪里配置,也没有写过滤路径是后端接口路径还是前端文件路径,所以尝试摸索了很多次才成功,所以总结一下吧,希望可以给到大家帮助。

### 若依框架中集成 Quill 富文本编辑器的方法 若依框架是一个基于 Spring Boot 和 Vue 的前后端分离快速开发平台,其功能强大且灵活。要在若依框架中集成 Quill 富文本编辑器,可以按照以下方式实现。 #### 前端部分:引入和初始化 Quill 编辑器 在前端页面中,首先需要通过 CDN 或本地文的方式加载 Quill 所需的 CSS 和 JavaScript 文[^2]: ```html <!-- 引入 Quill 的样式 --> <link href="https://cdn.quilljs.com/1.3.7/quill.snow.css" rel="stylesheet"> <script src="https://cdn.quilljs.com/1.3.7/quill.js"></script> ``` 接着,在 HTML 中定义一个容器用于承载 Quill 编辑器,并编写脚本对其进行初始化[^3]: ```html <div id="editor-container" style="height: 200px;"></div> <script> // 初始化 Quill 编辑器 var quill = new Quill('#editor-container', { theme: 'snow', placeholder: '请输入内容...' }); // 获取编辑器中的内容(HTML 格式) function getEditorContent() { return quill.root.innerHTML; } // 设置编辑器的内容(HTML 格式) function setEditorContent(html) { quill.clipboard.dangerouslyPasteHTML(html); } </script> ``` 上述代码实现了基本的功能,包括获取和设置编辑器内容。这一步骤对于后续与后端交互至关重要。 --- #### 后端部分:处理富文本数据 在若依框架的后端模块中,通常会有一个表单提交接口来接收来自前端的数据。为了支持 Quill 编辑器生成的富文内容,可以在对应的实体类中添加字段存储这些数据[^1]。例如: ```java @Entity public class Article { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(columnDefinition = "TEXT", nullable = false) private String content; // 存储富文内容 public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } } ``` 当接收到前端传递过来的 JSON 数据时,可以通过 `@RequestBody` 注解将其绑定到 Java 对象上。假设前端发送的是如下结构的请求体: ```json { "content": "<p>这是从 Quill 编辑器传来的富文内容。</p>" } ``` 那么后端可以直接解析该对象并保存至数据库中。 --- #### 表单同步逻辑 为了让用户能够方便地操作文章内容,还需要确保表单与 Quill 编辑器之间的双向绑定关系正常工作。具体来说,在新增或编辑文章时应做到以下两点: 1. **新增文章**:展示空白状态下的 Quill 编辑器; 2. **编辑文章**:将已有记录填充回 Quill 编辑器实例内。 以下是 Vue 组内的伪代码示例,展示了如何动态更新编辑器内容以及监听变化事以便实时反馈给服务器端: ```javascript export default { data() { return { articleData: { content: '' // 初始为空字符串 }, quillInstance: null }; }, mounted() { const toolbarOptions = [ ['bold', 'italic'], [{ list: 'ordered' }, { list: 'bullet' }] ]; this.quillInstance = new Quill('#editor-container', { modules: { toolbar: toolbarOptions }, theme: 'snow' }); // 将初始值注入到 Quill 实例里 if (this.articleData.content !== '') { this.quillInstance.setContents(this.quillInstance.clipboard.convert(JSON.parse(this.articleData.content))); } // 添加变更侦听器 this.quillInstance.on('text-change', () => { this.articleData.content = this.quillInstance.root.innerHTML; }); } }; ``` 以上片段说明了如何利用 Vue 生命周期钩子完成组挂载后的初始化动作,同时也提供了简单的回调机制以追踪用户的输入行为。 --- #### 安全注意事项 由于 Quill 支持嵌套任意合法 HTML 片段作为最终渲染结果的一部分,因此务必采取措施防止 XSS 跨站攻击风险。一种常见做法是对所有外部来源的数据执行转义过滤后再呈现出来;或者借助第三方库比如 DOMPurify 来净化潜在危险标签属性。 ```javascript import DOMPurify from 'dompurify'; // 净化函数调用 const sanitizedHtml = DOMPurify.sanitize(quill.root.innerHTML); setEditorContent(sanitizedHtml); // 更新安全版本的内容回到视图层面上去 ``` 这样既保留了灵活性又保障了一定程度上的安全性。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓味少女vv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值