• Tomcat 报 The valid characters are defined in RFC 7230 and RFC 3986


    问题

    24-Mar-2017 23:43:21.300 INFO [http-apr-8001-exec-77] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header
     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.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.java:239)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
        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)

    项目升级到新的Tomcat8

    v8.0.41/                2017-01-24 08:07      
    v8.0.42/ 2017-03-16 22:36

    就报以上错误,换回老的版本

    v8.0.39/                2016-11-14 09:05

    问题解决。

    这又可能是最近官方tomcat更新出问题了...

    还有一种可能是:

    RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。

    RFC3986中指定了以下字符为保留字符:

    !*'();:@&=+$,/?#[]

            不安全字符

            还有一些字符,当他们直接放在Url中的时候,可能会引起解析程序的歧义。这些字符被视为不安全字符,原因有很多。

        ->空格Url在传输的过程,或者用户在排版的过程,或者文本处理程序在处理Url的过程,都有可能引入无关紧要的空格,或者将那些有意义的空格给去掉

        ->引号以及<>引号和尖括号通常用于在普通文本中起到分隔Url的作用

        ->#通常用于表示书签或者锚点

        ->%百分号本身用作对不安全字符进行编码时使用的特殊字符,因此本身需要编码

        ->{}|^[]`~某一些网关或者传输代理会篡改这些字符

    详细信息可参考:http://www.cnblogs.com/interdrp/p/6621559.html

    URL编码的online工具:http://meyerweb.com/eric/tools/dencoder/

            Javascript 中和编解码相关的几对函数escape / unescape,encodeURI / decodeURI和encodeURIComponent / decodeURIComponent,可以深入一下。

  • 相关阅读:
    国内免费网络硬盘个人汇总
    SQL Server 2008 R2 (MS官方全版本),AIO,含x86和x64
    宣称支持REST的Web框架到底有多REST?
    flex(flash)下的pdf处理组件
    Visual Studio 2010 Pro Power Tools给VS2010的UI进行重大升级
    对XML里的属性或元素进行模糊搜索的方法
    Expression Blend 4 SP1现在可以支持Flash UI组件
    可选参数在.NET中全面开花
    Flex与JS交互完全攻略
    Flash Builder 4.0.1更新放出.同步更新框架为Flex SDK 4.1!支持最新的AIR 2正式版和Flash Player 10.1![图文]
  • 原文地址:https://www.cnblogs.com/interdrp/p/6617385.html
Copyright © 2020-2023  润新知