webflux解决get请求中文乱码问题
Webflux是Spring中一个非阻塞的框架,使用方式类似SpringMVC.最近用该框架做了个网关服务的重构.因为其中遇到了些问题.比较难解决的就是这个GET请求如果包含中文且发送时候没有用URL编码的话,直接就乱码了.无法进行后续的处理了.报错如下:
org.springframework.http.server.reactive.ReactorHttpHandlerAdapter - Invalid URL for incoming request: Illegal character in query at index
发现这个问题后.首先尝试通过Filter的方式来解决乱码问题.按照官方文档增加了filter.发现ReactorHttpHandlerAdapter这个方法是在filter之前执行.该方法尝试失败.
后面通过查看netty源码发现其最后会调用 HttpServerCodec.decode 到
HeaderParser.process 方法使用的是ASC解码的方式.每次读取的是一个byte位信息.故而产生了乱码.要想解决这个问题.那么需要做类似于tomcat的 URIEncoding="utf-8"的设置应该就可以解决改问题.后面查看官方文档.没有找到如何设置.到此该方法展示无效了.顺便给官方提交了一个issues
理论上应该是可以设置的.如果你知道方法可以留言告诉我.
这个方法也行不通.那我打算直接从底层的服务器容器下手来解决该问题.因为官方文档上指出webflux的底层容器是支持tomcat,jetty,servlet3.1+,netty等方式.因为jetty默认就是支持URIEncoding="utf-8"的,所以这里我直接用jetty来对默认的netty容器进行替换.
只需要修改pom文件如下:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-reactor-netty</artifactId></exclusion></exclusions></dependency><!-- use jetty default URIEncoding is UTF-8 ,Chinese GET request garbled --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency>
再次运行后,发现已经解决该问题了
webflux解决get请求中文乱码问题相关推荐
- 解决get请求中文乱码问题
在很多情况下get请求会发生中文乱码的情况,而换做post就不会,这其中的根本原因是get请求默认的是使用"iso-8859-1"编码,接下来介绍两种种解决get请求编码的方法 1 ...
- 解决Post请求中文乱码问题
Web应用的中文乱码由来 1.Tomcat默认使用字符集ISO-8859-1,属于西欧字体集 2.解决乱码的核心思路是将ISO-8859-1转换为UTF-8 3.Servlet中求请与响应都需要设置U ...
- postmain请求中午乱码_完美解决Get和Post请求中文乱码的问题
对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); ...
- 010_Post请求中文乱码
一. 创建一个GBK编码的html文件, 发送post请求 1. 新建一个PostLuanMa的Web工程 2. 新建一个postGBK.html文件 3. 更改postGBK.html编码为GBK ...
- python idea控制台中文乱码_python 解决cv2绘制中文乱码问题
python 解决cv2绘制中文乱码问题 因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题, 因此使用PIL在图片上绘制添加中文,可以指定字体文件. 大体思路: OpenCV图 ...
- 【Servlet】HTTP请求中文乱码的问题
请求中文乱码 在进行请求参数传递时,经常会遇到请求数据为中文时的乱码问题,当Form表单的文本域中输入中文时会产生乱码问题,出现乱码的原因与客户端的请求编码方式(GET请求或POST请求)以及服务器的 ...
- 解决POST提交中文乱码问题
spring提供的,专用于解决POST提交中文乱码问题,需要在web.xml中配置 <!-- 注册spring提供的针对POST请求的中文乱码问题 --><filter>< ...
- php运行显示中文乱码,如何解决PHP界面显示中文乱码的问题
如何解决PHP界面显示中文乱码的问题 发布时间:2020-07-14 15:19:00 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP界面显示中文乱码的问题 ...
- ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题
确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...
- Spring-解决请求中文乱码问题
Spring-解决请求中文乱码问题 参考文章: (1)Spring-解决请求中文乱码问题 (2)https://www.cnblogs.com/andyfengzp/p/6197993.html (3 ...
最新文章
- Box2dの自定义多边形
- PuTTY 设置Serial(ubuntu)
- java getselecteditem_java – 将getSelectedItem()从JComboBox转换为int或任何其他东西
- 来及Java空间的传送门2
- oracle 10g分区表,oracle10g--11gR2分区表汇总四
- maven的依赖和聚合
- android phone win10下载,微软Your Phone新功能: 可在Win 10 PC 上运行 Android 应用程序...
- Redis容量及使用规划(转)
- 小米线刷包需要解压么_小米10刷机教程,线刷升级更新官方系统包
- 跨平台应用开发进阶(四) :uni-app 实现上传图片
- cocos2d-html5教程之重要概念
- w3af 安装并配置桌面和快速启动栏
- 用降群的方法来解算还原魔方的步骤C++
- 玩战塔英雄不显示服务器,王者荣耀的这个问题,国家点名了仍没有改正过来!战塔英雄就没有...
- 订单能否按时交期?制造企业必须面对这几个问题
- 第一次找工作/实习前需要准备的东西(互联网行业)
- [BUUCTF]第七天训练日志
- centos修改系统可用内存_centos7开启交换内存
- OSS异常:com.aliyun.oss.ClientException:UnknownHost
- 手握119亿美元捐赠基金!美国密歇根大学宣布正式进军加密市场