【Java 后端接收前端的<p>富文本数据,其中标签样式数据丢失解决】

文章讨论了在前端向后端传递包含富文本格式的参数时,由于安全配置,特别是XSS防护机制,导致HTML标签如<p>、<img>等被过滤掉的问题。问题定位为拦截攻击,为防止XSS攻击,后端默认过滤了含有代码标签的字符串。解决方案是调整XSS配置,例如设置特定URL的过滤规则以确保富文本数据的正确传递。

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

问题描述:

前端传参的时候,某个参数中是富文本格式,格式如下:

{"msg":"操作成功","code":200,"developVos":[{"id":32,"qtId":null,"taskId":null,"oldQtId":186,"newQtId":186,"qtType":"judge","qtCode":"AW2023051100000004","qtName":"<p>147<img src=\"https://140.210.199.79/file/download/other/2023/05/11/d843133d-49dc-44f1-926c-8bfc5618e2c2.jpg\">"kpName":"测试1","total":1}}

 

 

reqParam这个参数传递到后台之后,接收的数据变为: 参数英文名参数中文名称参数是否必填参数值是否可空,其中的<table><toboy><tr><td><p>等标签全部丢失

问题定位:

拦截攻击问题,默认会把字符串中含有代码的标签过滤

解决办法:

#xss配置,防止xss攻击
xss:
  #过滤开关
  enabled: true
  #排除链接(多个用逗号分隔)
  excludeUrls:
    - /question/edit/save/theory/*
  #匹配链接
  urlPatterns: /dataservice/*

 

在React + Umi项目中结合Ant Design实现拖放文件上传到Java后台,首先需要做到前端的交互和后端接收处理。以下是步骤描述: **前端部分:** 1. 使用`antd`库的`DragDrop`组件和`Upload`组件结合起来: - 创建一个`DragArea`组件,允许用户直接拖拽文件进入: ```jsx import React, { useCallback, useState } from "react"; import { DragDropContext, DropzoneArea } from "antd"; const onDropFiles = useCallback((files) => { onFileChange(files); // 调用后端接口或状态更新 }, []); <DragDropContext onDrop={onDropFiles}> <DropzoneArea /> </DragDropContext> ``` - 在`Upload`组件中添加文件改变事件处理器,将文件列表发送到后台: ```jsx const onFileChange = (fileList) => { uploadFiles(fileList); // 自定义上传方法,发送文件到后端 }; ``` 2. 使用`axios`或`fetch`等库将文件发送到后端,以`multipart/form-data`形式提交: ```jsx async function uploadFiles(fileList) { try { const formData = new FormData(); for (const file of fileList) { formData.append("file", file); } await axios.post('/api/upload', formData); } catch (error) { console.error("Error uploading files:", error); } } ``` **后端部分(Java)**: 1. 创建RESTful API,如`/api/upload`,接受`multipart/form-data`类型的POST请求: ```java @PostMapping("/api/upload") public ResponseEntity<?> handleUpload(@RequestParam("file") MultipartFile[] files) { List<MultipartFile> fileList = Arrays.asList(files); // 这里处理文件并保存到数据库或临时目录 // 之后返回响应信息 } ``` 2. 接收`fileList`作为参数,每个`MultipartFile`对象代表一个上传的文件。 **注意事项:** - Java后端需要处理`MultipartFile`,包括文件大小限制、文件类型验证等。 - 前端可能需要处理拖放事件的取消和错误情况。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值