精华内容
下载资源
问答
  • Tomcat 400错误

    千次阅读 2018-06-29 13:55:55
    The valid characters are defined in RFC 7230 and RFC 3986新版本的tomcat对url的参数做了比较规范的限制,必须按照RFC 7230 and RFC 3986规范,对于非保留字字符,如果不做转义处理,一律都会报The valid ...
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    

    新版本的tomcat对url的参数做了比较规范的限制,必须按照RFC 7230 and RFC 3986规范,对于非保留字字符,如果不做转义处理,一律都会报The valid characters are defined in RFC 7230 and RFC 3986 错误。


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


    参考解决方法:https://stackoverflow.com/questions/41053653/tomcat-8-is-not-able-to-handle-get-request-with-in-query-parameters


    配置tomcat的catalina.properties
    添加或者修改:
    tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

    或者:对参数进行编码!


    Tomcat 配置项:https://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html



    %2C : ,            %5C : \

    展开全文
  • tomcat 400错误跳转自定义页面

    千次阅读 2020-12-04 11:44:01
    tomcat 400错误跳转自定义页面 springMVC在web.xml设置可以拦截404,500等错误跳转到自定义页面,但是无法拦截400错误。 <error-page> <error-code>404</error-code> <location>./404....

    tomcat 400错误跳转自定义页面

    springMVC在web.xml设置可以拦截404,500等错误跳转到自定义页面,但是无法拦截400错误。

    <error-page>
    	<error-code>404</error-code>
    	<location>./404.jsp</location>
    </error-page>
    <error-page>
    	<error-code>500</error-code>
    	<location>./500.jsp</location>
    </error-page>
    

    根据官网给出的方案需要重写ErrorReportValve处理400错误跳转到自定义页面,首先需要更改tomcat中的server.xml文件,在host中添加Valve,页面将不显示错误的详细信息。

    <Host name="localhost"  appBase="webapps" 
    	unpackWARs="true" autoDeploy="true">
    	   <Valve className="org.apache.catalina.valves.ErrorReportValve" 
    	   showReport="false" showServerInfo="false" />
    </Host>
    

    然后要新建一个maven项目进行对ErrorReportValve的重写,在pom.xml里添加需要的文件。

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-catalina</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-coyote</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-el-api</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jaspic-api</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-juli</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-util</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-util-scan</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    

    重写tomcat的ErrorReportValve,新建CustomErrorReportValve

    public class CustomErrorReportValve extends ErrorReportValve
    

    重写report,读取需要的400页面,然后StringBuilder输出,也可以直接在StringBuilder中写html代码进行输出。

     @Override
     protected void report(Request request, Response response, Throwable t) {
    	 StringBuilder sb = new StringBuilder(); 
    	 response.setContentType("text/html");
    	 response.setCharacterEncoding("utf-8");
    	 sb.append("自定义HTML页面");
    	 Writer writer = response.getReporter();
    	  if (writer != null) {
    	    writer.write(sb.toString());
    	  }
    }
    

    然后项目打包。

    mvn clean compile package
    

    最后放到tomcat lib中,还需要更改server.xml文件,在host中添加errorReportValveClass为自定义class

     <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" errorReportValveClass="org.aspire.errorValve.CustomErrorReportValve">
    

    重新启动tomcat,400页面就跳转到自定义的页面了。
    (如果页面乱码在pom.xml里添加build即可解决)

    <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <configuration>
                   <source>1.6</source>
                   <target>1.6</target>
                   <encoding>utf-8</encoding>
               </configuration>
           </plugin>
       </plugins>
    </build>
    

    https://aspiresoftware.in/blog/catalinatomcat-custom-error-report-valve-to-handle-errors-exceptions/

    展开全文
  • 最近部署项目的时候,由于MIS配置的是Tomcat 7.0.78的服务端,导致Web应用不正常,报HTTP 400错误(Chrome无异常、IE报错)。问题原因初步判断为7.078版本的服务端接收请求不会对符号进行转义,Chrome不异常的原因...

    Tomcat 7.069以后的版本会有这个问题。

    最近部署项目的时候,由于MIS配置的是Tomcat 7.0.78的服务端,导致Web应用不正常,报HTTP 400错误(Chrome无异常、IE报错)。问题原因初步判断为7.078版本的服务端接收请求不会对符号进行转义,Chrome不异常的原因或许是浏览器自身转义了。具体错误信息如下:


     Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
     java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
            at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:472)
            at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:683)
            at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
            at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
            at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
            at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
            at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
            at java.lang.Thread.run(Thread.java:745)
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    查阅了大量资料后,有两种解决方案:

    Plan 1:
    更换低版本的Tomcat来规避这种问题。

    Plan 2:
    在conf/catalina.properties中最后添加一行:

    org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

    重启服务器后,解决问题。

    官方指南地址:http://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html

    官方说明:

    org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH

    If this is true ‘%2F’ and ‘%5C’ will be permitted as path.delimiters.If not specified, the default value of false will be used.

    展开全文
  • tomcat自定义400错误页面

    千次阅读 2020-05-19 14:22:34
    原文链接:https://aspiresoftware.in/blog/catalinatomcat-custom-error-report-valve-to-handle-errors-exceptions/  通过在server.xml文件中 增加上面代码 重启tomcat 400页面如下 自定义 400 错误页面方法 1....

    原文链接:https://aspiresoftware.in/blog/catalinatomcat-custom-error-report-valve-to-handle-errors-exceptions/

     

    <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />

     

    通过在server.xml文件中 增加上面代码 重启tomcat 400页面如下

     

    自定义 400 错误页面方法

    1.添加依赖

    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-catalina</artifactId>
      <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-coyote</artifactId>
      <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-el-api</artifactId>
      <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-jaspic-api</artifactId>
      <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-juli</artifactId>
      <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-servlet-api</artifactId>
      <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-util</artifactId>
      <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-util-scan</artifactId>
      <version>${tomcat.version}</version>
    </dependency>

    2 创建类并继承 ErrorReportValve

    public class CustomErrorReportValve extends ErrorReportValve

    实现方法

    @Override protected void report(Request request, Response response, Throwable t)

    if (response.getStatus() == 400) {
     StringBuilder sb = new StringBuilder(); 
     //Give relative path of html
     String pageString = getHtmlPage("./400.html");
     response.setContentType("text/html");
     response.setCharacterEncoding("utf-8");
     sb.append(pageString);
     Writer writer = response.getReporter();
      if (writer != null) {
        writer.write(sb.toString());
      }
    }

    public String getHtmlPage(String path) throws IOException {
        File file = new File("test");
        file.exists();
        StringBuilder sb = new StringBuilder();
        BufferedReader br = new BufferedReader(new FileReader(path));
        try {
          String line = br.readLine();
          while (line != null) {
            sb.append(line);
            sb.append(System.getProperty("line.separator"));
            line = br.readLine();
          }
        } finally {
          br.close();
        }
        return sb.toString();
      }

    展开全文
  • TOMCAT 修改错误页404,400,500 的设置

    千次阅读 2019-08-08 16:35:07
    如果只想修改tomcat的,就打开root目录下conf的web.xml 如果是运行的某个项目的,就打开webapp下的那个项目的web-inf文件夹下的web.xml 在/web-app上加如下内容 <error-page> <error-code>400</...
  • 找到tomcat路径中conf文件夹下server.xml文件找到 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 修改成 <Host name="localhost" appBase="/xxx/xxx/xxx/xxx/...
  • Tomcat--配置400/404/500自定义错误页面

    万次阅读 多人点赞 2017-12-23 12:07:55
    一、说明 1、web系统开发过程中经常遇见400/404/500类型的...2、本文只提Tomcat设置400/404/500自定义错误页面(推荐),Springmvc controller配置自定义错误页方式点击这里~ 二、实现 1、/WEB-INF/web.xml ...
  • 解决Invalid character found in the request target. The valid characters are defined...Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说: org.apache.tomcat.util.http.parser.Ht...
  • 百度搜索解决方案是修改web.xml的error-page,但由于错误直接由tomcat拦截处理,这种方式解决不了此问题,后发现是由于tomcat升级后tomcat对http请求特殊符号进行了更严格的控制,如果不符合则报400错误,页面可能会...
  • 解决Tomcat出现400问题

    千次阅读 2019-03-06 19:56:46
    有时我们使用SSM框架时,会出现400错误和这样的The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request...
  • Tomcat8.5,当Get请求中包含了未经编码的中文字符时,会报以下错误,请求未到应用程序在Tomcat层就被拦截了。Tomcat报错:java.lang.IllegalArgumentException: Invalid character found in the request target. The...
  • Tomcat升级版本出现400问题

    千次阅读 2020-05-28 20:41:22
    但是升上去的tomcat,发现有些页面出现400错误。 二、原因       经过排查发现tomcat在升级的时候,增加了新的特性性 1) URL参数包含大括号{}报错      &...
  • Apache Tomcat 隐藏版本号的具体步骤
  • 简单介绍:1,nginz 1.4版本2,tomcat 9.0 版本3,证书由 letsencrypt 生成,免费的ov证书。问题描述:比如原来访问test.***.com/manage可以正常访问,配置https后浏览器直接输入test.***.com/manage 域名会自动...
  • tomcat 访问400 的一种情况

    千次阅读 2018-01-10 23:26:00
    tomcat 高版本对访问url做了较高的校验,如果url中包含特殊字符,tomcat会自动拦截,返回400错误。如果要包含特殊字符,需要事先进行转译。  我原来用的apache-tomcat-6.0.51 对“{}”这种特殊字符进行拦截。后来...
  • Tomcat 8.5的服务端,导致Web应用不正常,报HTTP 400错误(Chrome无异常、IE报错)。 localhost_access_log [16/Jan/2019:17:05:57 +0800] "GET null null" 400 16-Jan-2019 17:04:49.851 信息 ...
  • 首先要明白400错误是什么意思: 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。 然后在java代码中,打印请求的url,会发现url中存在空格,可能是使用各种序列化根据(Gson等)...
  • Tomcat 配置错误界面

    万次阅读 2018-06-06 16:58:05
    Tomcat发生错误时跳转到错误页面 一、修改 tomcat 的配置文件 修改 tomcat 的配置文件,当页面发生错误时跳转到指定的页面,在 tomcat 中 web.xml 文件中添加如下内容: &amp;amp;lt;!-- 400错误 --&amp;...
  • 从阿里云拉下来的tomcat启动后,访问容器出现404错误,解决方案在上一篇:https://blog.csdn.net/qq_40891009/article/details/103898876,解决完这个问题后又出现了另一个问题,既这个错误(404)的问题修改好了只是在...
  • 一、Tomcat 7.0.81 URL参数包含大括号{}报错 原因: 问题是由于Tomcat的新版本中增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)...
  • Tomcat错误页重定向

    千次阅读 2019-03-15 17:23:42
    Tomcat出现404界面之后跳转到默认页 可以将此页重新定位到其他指定界面: 1、创建新的错误页 编写新的界面error.html,将... 修改Tomcat\webapps\ROOT\WEB-INF\web.xml文件内容,指定错误状态码对应的界面 ...
  • tomcat控制台详细错误日志设置

    热门讨论 2011-09-07 19:12:21
    tomcat控制台详细错误日志设置,有时tomcat控制台报的错误比较模糊,不知道该怎样去找原因,现在好了,按照简单说明配置一下
  • Tomcat 500错误 问题集锦

    千次阅读 2020-02-12 15:10:19
    HTTP 500 - 内部服务器错误 1.jdk版本与Tomcat版本不一样。...刚开始的时候以为是配置的错误,经改正后错误依然,重装Tomcat之后还是照样。无奈中仔细看了错误提示,居然发现错误提示: Unsuppo...
  • tomcat设置错误页面

    千次阅读 2018-08-27 13:32:23
    当我们访问tomcat的一个不存在的页面,返回错误信息如下: 这样的界面直接暴露给用户并不友好,有时候还不安全,因此一般需要修改默认的错误页。 vim /$TOMCAT_HOME/conf/web.xml 在文件末尾,&lt;/web-app...
  • tomcat自定义错误页面

    千次阅读 2018-04-13 15:10:36
    废话不多说,直接看步骤1、在tomcat的conf/web.xml中,增加如下配置&lt;error-page&.../错误页面,(/表示的是tomcat的webapps/root目录)&lt;/location&gt; &lt;/error-page...
  • 如何处理tomcat默认错误页面

    万次阅读 2015-12-31 17:19:02
    受够了Tomcat默认的那个错误页面 还有就是报错页面一样的难看!~ ok分享一个方法: 1.首先准备一个漂亮的错误页面:404.html 您访问的页面不存在 /*reset及 clear*/ body, div, dl, dt, dd, ul, ol, li, h1, ...
  • tomcat错误日志分析

    千次阅读 2017-07-01 12:57:08
    private WebSocketProcessor ...这样的错误,在tomcat路径下,报的错误是,不能把webSocketProcesser转化为WebSocketProcessor,这样在以后的时候,就知道,是字母写错了,导致不能转化。同时也要注意代码的规范性。
  • 原因: ... 会导致400错误 解决方法: 找到config/catalina.properties 最后一行,去掉注释# 在最后加一个{} #tomcat.util.http.parser.HttpParser.requestTargetAllow=| 改为: tomcat.uti...
  • tomcat常见错误跳转到指定页面

    千次阅读 2017-11-02 18:08:17
    通过URL访问tomcat中资源,有许多常见的错误,比如说404呀,500呀什么的,如果不加设置,浏览器页面会直接显示这些错误,用户感受当然是相当不好的了,那么如何解决这个问题呢? 其实很简单,只需要在项目的web.xml...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 246,142
精华内容 98,456
关键字:

tomcat400错误