文档章节

解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF

卢磊磊
 卢磊磊
发布于 2017/07/20 14:42
字数 307
阅读 354
收藏 0

tomcat的get请求中出现特殊字符:|,{}等,解决的办法,测试了7.0.73版本,修改catalina.properties,但是并不成功。最后还是使用低版本的,希望有其他方法的同学找到好办法告知。

比较好的解释:

(1)http://blog.cangzhitao.com/post/exception/Invalid-character-found-in-the-request-target.htm

(2)

通过这里的回答,我们可以知道:

Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。

具体来说,就是添加了些规则去限制HTTP头的规范性

参考这里

具体来说:

org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target

if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i == 35 || i == 60 || i == 62 || i == 92 || i == 94 || i == 96 || i == 123 || i == 124 || i == 125) {
                IS_NOT_REQUEST_TARGET[i] = true;
            }

转换过来就是以下字符(对应10进制ASCII看):

  • 键盘上那些控制键:(<32或者=127)
  • 非英文字符(>127)
  • 空格(32)
  • 双引号(34)
  • #(35)
  • <(60)
  • >(62)
  • 反斜杠(92)
  • ^(94)
  • TAB上面那个键,我也不晓得嫩个读(96)
  • {(123)
  • }(124)
  • |(125)

 

 

解决办法:

还是参考这里

即:

配置tomcat的catalina.properties

添加或者修改:

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

 

当然还有另外一种方法,就是将所有的参数都进行编码

本文转载自:http://www.cnblogs.com/hark0623/p/6977737.html

共有 人打赏支持
卢磊磊
粉丝 0
博文 92
码字总数 15927
作品 0
昌平
程序员
遇到一个问题,标记下

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986...

mifans
2016/11/18
245
1
tomcat报错Error parsing HTTP request header

tomcat 7.0.75,jdk1.7.0.80,运行中报错Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 tomcat配置:...

Mr-想
2017/02/23
7.2K
3
【linux】tomcat新版本特性引发的url问题

通过我们的测试,在tomcat7.0.73版本以上都会出现下列描述的问题。 1、测试报错: Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.Ill...

anank
07/02
0
0
TOMCAT9 服务器问题

HTML代码 我的表单 u: 超链接

山豆根
2017/05/08
59
0
HttpComponents Client 5.0 Alpha1 发布

HttpComponents Client 5.0 Alpha1 发布,主要更新如下: Improved conformance to requirements and recommendations of the latest HTTP/1.1 protocol specification (RFC 7230, RFC 7231,......

淡漠悠然
2016/01/29
957
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

dubbo部分常见的面试题目

1、什么是AMQP协议? AMQP的全称是 Advanced Message Queuing Protocol (高级消息队列协议) 他是应用层协议的一个开放的标准,为面向消息中间件而设计,基于此协议的客户端和消息中间件可以...

DemonsI
11分钟前
0
0
http和https协议

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,中文含义为“超文本传输协议在安全加密字层”,简单来说就是加密数据传输,通俗的说就是安全连接。 HTTPS安全超文本传输...

寰宇01
12分钟前
0
0
vue内引入语音播报功能

在vue项目中引入语音播报,使用的科大讯飞语音接入, 具体思路为每次接收到语音信息后存入一个数组,然后监听这个数组,开始冲第一个索引播放,并且同时根据vuex getter 来动态删减数量 给a...

originDu
20分钟前
0
0
Java创建对象的五种方式

一、使用new关键字,调用构造方法创建对象 Person p1 = new Person(); 运行过程: 1、给新对象分配内存空间,将数据存储到堆。 2、执行显示的初始化。 3、执行构造器。new方法中括号参数传递...

Drathin
21分钟前
0
0
git使用纪要

之前公司一直没用git,于是自己注册了一个账号自己用,因为也没人合作,所以也没太关注协作方面的事情。最近公司终于想通了,开始用git,于是研究了一下,在此做个记录。 git功能非常灵活,因...

propagator
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部