javaweb未全站https化,因tomcat版本导致站内http请求出错解决
2017-09-25 22:36
405 查看
最近在做调测时,由于javaweb网站没有做全站的https化,只将登录鉴权等关键页面做成https请求的,登录成功后在返回页面内的跳转是http处理的。在同事中,使用tomcat 6.0系列是正常的,但是用tomcat 8.0系列在点击页面内的http跳转时,出现错误如下:
Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
经查找发现是由于在tomcat 7.0.73添加对http请求url的规范限制,不允许使用包含未编码的花括号的url进行请求。当然这个不是重点,重点是这个限制在tomcat 7.0.73中是必选的,这就导致一些现有网站要升级tomcat的时候出现严重的问题。所以在tomcat
7.0.73版本中,有人指出该限制做成必选属于BUG。于是在7.0.73版本后,tomcat维护者把该限制做成可选的,这个修改体现在tomcat中的 catalina.properties 文件中,该文件添加一个属性 tomcat.util.http.parser.HttpParser.requestTargetAllow=|。这个属性是用来决定是否限制不经过编码的花括号({})的,默认是注掉的,也就是说默认是限制的。如果我们不需要这种限制,直接将该属性开启,并且在“|”后添加“{}”即可。我本次解决的方法就是把该属性打开,使其不对不编码的花括号进行限制,最终配置为tomcat.util.http.parser.HttpParser.requestTargetAllow=|{},保存配置重启服务器就可以了。
Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
经查找发现是由于在tomcat 7.0.73添加对http请求url的规范限制,不允许使用包含未编码的花括号的url进行请求。当然这个不是重点,重点是这个限制在tomcat 7.0.73中是必选的,这就导致一些现有网站要升级tomcat的时候出现严重的问题。所以在tomcat
7.0.73版本中,有人指出该限制做成必选属于BUG。于是在7.0.73版本后,tomcat维护者把该限制做成可选的,这个修改体现在tomcat中的 catalina.properties 文件中,该文件添加一个属性 tomcat.util.http.parser.HttpParser.requestTargetAllow=|。这个属性是用来决定是否限制不经过编码的花括号({})的,默认是注掉的,也就是说默认是限制的。如果我们不需要这种限制,直接将该属性开启,并且在“|”后添加“{}”即可。我本次解决的方法就是把该属性打开,使其不对不编码的花括号进行限制,最终配置为tomcat.util.http.parser.HttpParser.requestTargetAllow=|{},保存配置重启服务器就可以了。
相关文章推荐
- centos7 javaweb 链接中文请求tomcat乱码问题解决
- 关于jdk版本问题导致的eclipse导入web项目出错解决方法
- asp.net Chartr控件异常: System.Web.HttpException: 为 ChartImg.axd 执行子请求时出错(已解决)
- 解决Fiddler无法捕获本地HttpWebRequest(C#.net)请求和HttpURLConnection(Java)请求
- eclipse中导入web项目变成java项目解决办法and dynamic web module和对应的TOMCAT 版本
- intellij IDE build出错,无法显示图片,找不到tomcat server,java编译版本过低,异常推出后无法启动项目等常见问题解决
- 怎样防止jdk出现版本不一致而导致控制台或Tomcat的出错?
- 【转】System.Net.HttpWebRequest请求超时的问题解决方法
- Tomcat部署java项目出错的解决办法
- xml parser jdk版本切换后出错,解决方法set 应用服务器 jdk/optional java vm arguments:
- System.Web.HttpException: 超过了最大请求长度!解决办法
- Asp.net错误“System.Web.HttpException: 超过了最大请求长度”解决办法
- Java客户端通过Http发送POST请求上传文件到web服务器
- System.Web.HttpException: 超过了最大请求长度!解决办法
- 用HttpWebRequest做POST请求时返回Http 417 错误解决方法
- 用HttpWebRequest做POST请求时返回Http 417 错误解决方法
- webservice Axis发布deploy.wsdd出错, {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Coction refused: connect
- 关于"System.Web.HttpException: 超过了最大请求长度。"错误的解决
- 使用webView访问https的url-处理SslError解决android2.2版本之前的https请求问题
- XP下解决“system.web.services.protocols.soapexception:服务器无法处理请求。…〉system.exception:system.data.oracleclient 需要oracle客户端软件8.1.7或更高版本。