首页 > 编程语言 > 报错:java.lang.IllegalArgumentException

报错:java.lang.IllegalArgumentException

时间:2023-12-09 12:02:14浏览次数:40  
标签:lang java 请求 tomcat server 参数 报错 特殊字符

问题表象

开发,测试环境运行正常的接口到现场报错,报错日志关键信息如下:java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986。 问题分析及原因

由于代码在开发测试环境测试通过,判断大概率是现场特殊数据导致问题。查资料得知,如果Get请求的参数包含了特殊字符会引起上文中的报错。向现场确认,查看请求数据,发现参数中存在“[]”特殊字符。 出于网络安全考虑,Web容器默认是不允许Url中存在特殊字符的,对应的字符标准是RFC7230和RFC3986,一旦Url中出现了不符合标准的字符就会报这个异常。 解决方案

方案1:(采用的方案) 修改配置,项目用的是spring-boot内置的tomcat,增加spring配置 ————————————————

server.tomcat.relaxed-query-chars=<,>,[,\,\,],^,`,{,|,}

这个参数控制的是普通参数如果使用路径参数需要增加如下配置

server.tomcat.relaxed-path-chars=<,>,[,\,\,],^,`,{,|,}

方案2:
将Get请求改成Post请求。

方案3:
修改出错的接口,前端对参数进行编码,屏蔽特殊字符,后端解码。

标签:lang,java,请求,tomcat,server,参数,报错,特殊字符
From: https://blog.51cto.com/u_16328454/8746987

相关文章

  • JavaScript-history对象
    概述window.history属性指向History对象,它表示当前窗口的浏览历史。History对象保存了当前窗口访问过的所有页面网址。下面代码表示当前窗口一共访问过3个网址。window.history.length//3由于安全原因,浏览器不允许脚本读取这些地址,但是允许在地址之间导航。//后退到前一个网......
  • 不写javaType,能匹配上吗
    重新生成不写javaType,能匹配上吗不歇javaType,能匹配上吗xml复制代码<resultproperty="totalCubage"column="total_cubage"/><resultproperty="totalWeight"column="total_weight"/><resultproperty="totalQty&q......
  • 毕业设计-基于JAVA的机场航班起降与协调管理系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路 关注作......
  • javaScript/js 【call,apply,bind】
    在JavaScript中,call、apply和bind都是用于改变函数执行上下文(this的值)的方法。它们在不同的情境下有不同的用途。call方法:call方法允许你调用一个函数,并指定该函数内部的this值,以及将参数以单独的参数传递给函数。functiongreet(name){console.log(`Hello,${name}!Ia......
  • JAVA自定义对象序列化,自定义的控制每个字节的序列化情况
    在java中,正常来说序列化是可以直接继承Serializable,或使用类似于fastjson,protobuf等框架。但是这些框架对于二进制协议,自定义协议,私有协议方面却不太好使,私有协议大多还是按照字节的方式组织数据,对于java来说需要控制每个属性的序列化方式,所以这块主要还是以传统的方式,读字节......
  • Elasticsearch:一个强大的Java搜索引擎
    一、介绍Elasticsearch是一个基于ApacheLucene库的开源搜索引擎,它提供了一个分布式、多租户能力的全文搜索引擎,同时具有HTTP网络界面和无模式JSON文档。Elasticsearch是用Java开发的,它是一个可扩展的系统,可以很容易地通过插件来扩展其功能。二、特点全文搜索引擎:Elasticsearch使用......
  • Java IO流(上)
    JavaIO流一、基础知识IO流即存储和读取数据的解决方案。(一)File表示系统中的文件或者文件夹的路径获取文件信息(大小,文件名,修改时间)创建文件/文件夹删除文件/文件夹判断文件的类型注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。(二)IO流用于读写文件中的数据(可以读......
  • Java 时间相减
    题目描述你是个贪睡虫,有一天被老师逮个正着,这个老师很有意思,提出一个问题:“给定入睡时刻和起床时刻,计算一共睡了多长时间”,如果回答正确就可以免于处罚。入睡时刻和起床时刻都采用24小时制表示法(见备注),而且知道睡觉时间最少为1秒,最多为24小时。输入【输入格式】输入第一行描......
  • Java之包装类的详细解析
     包装类5.1概述Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:基本类型对应的包装类(位于java.lang包中)byteByteshortShortintIntege......
  • JavaScript笔记
    JavaScript的组成:     1.数据类型:JavaScript有8种基本数据类型,包括Undefined、Null、Boolean、Number、String、BigInt、Symbol和Object。变量:在JavaScript中,可以使用var、let或const关键字声明变量。函数:JavaScript中的函数是一种可重用的代码块,可以使用fun......