tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法

news/2024/11/30 0:32:35/

问题描述

今天在测试接口的是否使用tomcat启动服务,然后通过get请求去测试接口,页面返回报的错误是400。
tomcat中错误如下图所示:

请求参数为 location=[{"lng":108.871597,"lat":34.194412}]
很明显,在location的参数为json串
查询日志发现是有些地址直接被tomcat认为存在不合法字符,返回HTTP 400错误响应

测试问题

通过junit单元测试发现接口方面并没有错误,而且日志显示的是不合法字符,就针对于tomcat进行测试,将服务放在了jetty服务器中,接口显示正常,所以肯定是tomcat有问题

问题解决

这个问题是高版本tomcat中的新特性:就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。而我们的系统在通过地址传参时,在url中传了一段json,传入的参数中有"{"不在RFC3986中的保留字段中,所以会报这个错。

貌似这个错误只发生在tomcat升级到7.0.76版后
根据(https://bz.apache.org/bugzilla/show_bug.cgi?id=60594) ,
从以下版本开始,有配置项能够关闭/配置这个行为:
8.5.x系列的:8.5.12 onwards
8.0.x系列的:8.0.42 onwards
7.0.x系列的:7.0.76 onwards

…/conf/catalina.properties中,找到最后注释掉的一行 #tomcat.util.http.parser.HttpParser.requestTargetAllow=|  ,改成tomcat.util.http.parser.HttpParser.requestTargetAllow=|{},表示把{}放行

 

欢迎关注: 

 


http://www.ppmy.cn/news/416288.html

相关文章

IE上的The valid characters are defined in RFC 7230 and RFC 3986坑

前言 日常开发中经常遇到一些莫名其妙的小问题,例如即将上线的项目在线上异常报错,但是在本地确可以正常运行。往往这猝不及防的小惊喜,真是让我们猿猿欲哭无泪啊。这里简单总结一下在IE浏览器上遇到的一个小坑,之前就因为这个小…

IE上的 The valid characters are defined in RFC 7230 and RFC 3986 坑的解决方法

前言 日常开发中经常遇到一些莫名其妙的小问题,例如即将上线的项目在线上异常报错,但是在本地确可以正常运行。往往这猝不及防的小惊喜,真是让我们猿猿欲哭无泪啊。这里简单总结一下在IE浏览器上遇到的一个小坑,之前就因为这个小…

The HTTP header line [http Method: POST] does not conform to RFC 7230 and has been ignored

今天遇到一个比较基础,又没遇到过的问题。 这是使用httpClient调用接口的时候报的错误,错误就是http的请求头不正确。但是调用接口的是共用方法,以前都是正常用的,怎么这次就不行了呢?换了一个请求方法就好了。 话不多…

BSS 7230 航空内饰材料阻燃性能测试

BSS 7230 航空内饰材料阻燃性能测试--标准名称 BSS 7230 Determination of flammability properties of aircraft materials BSS 7230 航空内饰材料阻燃性能测试 BSS 7230 航空内饰材料阻燃性能测试--适用范围 Scope: This standard describes the procedures …

Advanced-C.01.基础知识

C语言程序设计概述 一个简单句的C程序 #include <stdio.h> int main(){printf("This is a C program.\n");retrun 0; }C程序的执行过程 数据单位 bit&#xff1a;位&#xff0c;计算机中最小的数据单位Byte&#xff1a;字节&#xff0c;计算机中信息组织和存…

联想M490原装Win8系统改Win7系统的血泪史

折腾了近两天&#xff0c;终于弄好了。以后再也不敢胡乱的换系统了&#xff0c;要换系统也得先知道该注意什么事项&#xff0c;不能什么都不知道就瞎搞&#xff0c;不要自认为自己知道。自认为自己知道什么是种非常无知的想法&#xff01;还有就是&#xff0c;网上一些什么都不…

关于联想G40-30不能从win8改win7的解决方案(亲测有效果)!!!

2019独角兽企业重金招聘Python工程师标准>>> 过年期间帮忙表哥重装了一台奇葩联想的笔记本,各种配置设置过程莫名其妙的: 原文已经失效转载备注下: 前段时间看到本论坛上有关于“现在最新上市的win8.1笔记本怎么更改不成win7和xp的系统?”这样的一个帖子。装…

联想g510升级方案_联想G510更换固态、加装内存条、移机械硬盘至光驱位简记

本文的目的是对电脑型号为联想G510型号的朋友们更新硬件提供帮助,本人在具体操作的时候由于网络上有各式各样的教程,而且很多都有一定的误导性,白白浪费诸多时间。特简要记录了本人更新硬件时的主要工作流程。文中放了一些硬件型号,也并非为了打广告,只是说明这个硬件在本…