问题描述:

JSP中通过form post方式请求URL传入json格式参数报错:

信息: 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:235)
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028)
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
 at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2549)
 at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2538)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:745)

var data =
 {
    "ids": [
        "0654B61D-5946-4875-A801-392DBEAB55F0"
    ],
    "docId": "6E846CE4-A818-443A-9A0A-28017084609A"
};

这是我的请求:.../dataCenter/addEditDoc.do?command=fileDownload&data=JSON.stringify(data);

问题原因:

查资料了解到最新的tomcat6 7 8 都有这个问题,这个问题是由于tomcat的新版本增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,
 而 RFC 3986规范定义了Url中
 只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。

解决方法:

对json字符串中大括号进行URL编码,结果为:
 /dataCenter/addEditDoc.do?command=fileDownload&data="+JSON.stringify(data).replace('{','%7B').replace('}','%7D');

PS: ASCII字符与URL编码的对照表:
 
 ASCII字符   URL编码 
空格     %20 
!     %21 
"    %22 
#   %23 
$    %24 
%   %25 
&    %26 
'     %27 
(    %28 
)    %29 
*    %2A 
+   %2B 
,     %2C 
-     %2D 
.     %2E 
/    %2F 
0    %30 
1    %31 
2    %32 
3    %33 
4    %34 
5    %35 
6    %36 
7    %37 
8    %38 
9    %39 
:     %3A 
;     %3B 
<   %3C
=   %3D
>   %3E 
?    %3F 
@   %40 
A    %41 
B    %42 
C    %43 
D    %44 
E    %45 
F    %46 
G    %47 
H    %48 
I    %49 
J    %4A 
K    %4B 
L    %4C 
M   %4D 
N    %4E 
O   %4F 
P    %50 
Q   %51 
R    %52 
S    %53 
T    %54 
U    %55 
V    %56 
W   %57 
X    %58 
Y    %59 
Z    %5A 
[    %5B 
\    %5C 
]    %5D 
^   %5E 
_    %5F 
`    %60 
a    %61 
b    %62 
c    %63 
d    %64 
e    %65 
f     %66 
g    %67 
h    %68 
i     %69 
j     %6A 
k    %6B 
l     %6C 
m   %6D 
n    %6E 
o    %6F 
p    %70 
q    %71 
r     %72 
s    %73 
t     %74 
u    %75 
v    %76 
w   %77 
x    %78 
y    %79 
z    %7A 
{    %7B 
|    %7C 
}    %7D 
~   %7E 
%7F 
€    %80 
%81 
‚    %82 
ƒ    %83 
„    %84 
…   %85 
†    %86 
‡    %87 
ˆ    %88 
‰  %89 
Š    %8A 
‹     %8B 
Œ   %8C 
%8D 
Ž    %8E 
%8F 
%90 
‘   %91 
’   %92 
“   %93 
”   %94 
•    %95 
–    %96 
—  %97 
˜    %98 
   %99 
š    %9A 
›     %9B 
œ   %9C 
%9D 
ž    %9E 
Ÿ    %9F 
%A0 
¡     %A1 
¢    %A2 
£    %A3 
%A4 
¥    %A5 
|    %A6 
§    %A7 
¨    %A8 
   %A9 
ª    %AA 
«    %AB 
¬   %AC 
¯    %AD 
   %AE 
¯    %AF 
°    %B0 
±   %B1 
²    %B2 
³    %B3 
´     %B4 
µ    %B5 
¶    %B6 
·     %B7 
¸     %B8 
¹    %B9 
º    %BA 
»    %BB 
¼   %BC 
½   %BD 
¾   %BE 
¿    %BF 
À    %C0 
Á    %C1 
    %C2 
à   %C3 
Ä    %C4 
Å    %C5 
Æ   %C6 
Ç    %C7 
È    %C8 
É    %C9 
Ê    %CA 
Ë    %CB 
Ì    %CC 
Í    %CD 
Π   %CE 
Ï    %CF 
Р  %D0 
Ñ    %D1 
Ò   %D2 
Ó   %D3 
Ô   %D4 
Õ   %D5 
Ö   %D6 
%D7 
Ø   %D8 
Ù    %D9 
Ú    %DA 
Û    %DB 
Ü    %DC 
Ý    %DD 
Þ    %DE 
ß    %DF 
à    %E0 
á    %E1 
â    %E2 
ã    %E3 
ä    %E4 
å    %E5 
æ   %E6 
ç    %E7 
è    %E8 
é    %E9 
ê    %EA 
ë    %EB 
ì     %EC 
í     %ED 
î     %EE 
ï     %EF 
ð    %F0 
ñ    %F1 
ò    %F2 
ó    %F3 
ô    %F4 
õ    %F5 
ö    %F6 
÷   %F7 
ø    %F8 
ù    %F9 
ú    %FA 
û    %FB 
ü    %FC 
ý    %FD 
þ    %FE

Error parsing HTTP request header--400 bad request的更多相关文章

  1. wx.request出现400 bad request的问题

    wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'a ...

  2. [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors

    手机客户端向服务器提交Http请求时,Tomcat抛出错误: 十二月 31, 2014 2:32:45 下午 org.apache.coyote.http11.AbstractHttp11Proces ...

  3. 信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level

    四月 , :: 下午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request h ...

  4. spring cloud provider报“Error parsing HTTP request header”,feign端报“Read timed out“

    这两天在调试spring cloud feign+hystrix报了如下错误: spring cloud provider报“Error parsing HTTP request header”,fe ...

  5. tomcat报错: Error parsing HTTP request header

    Error parsing HTTP request header 在服务器上面集成项目的时候,tomcat报错,在往上面查找是因为eclipse运行的tomcat和服务器上面的tomcat版本不一致 ...

  6. tomcat运行一段时间出“org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header”

    试了好多种方法,貌似还是没有解决问题,不过也学到了点东西,记录下备忘吧. 异常详情: 1.首先看到最多的就是说在server.xml中的Connector中添加maxHttpHeaderSize=&q ...

  7. Error parsing HTTP request header 控制台报错分析与解决

    控制台报错信息: org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request hea ...

  8. Call Azure Queue get "The remote server returned an error: (400) Bad Request."

    这几天开始研究Windows Azure, 在使用Azure Queue 的时候,CreateInfNotExists 总是抛出异常 "The remote server returned ...

  9. WebService:The remote server returned an error: (400) Bad Request

    开发工具:VS2010.开发组件:WebService.运行环境:Windows 今天一个同事在进行计费接口联调试时,发现了一个非常奇怪的问题:接口在家里环境测试,一切正常,但是部署到现网环境之后,连 ...

  10. 网页出现400 Bad Request Request Header Or Cookie Too Large错误的解决方法

    在开发项目过程中,突然遇到400 Bad Request Request Header Or Cookie Too Large的报错,我也是第一次出现这样的错误,感觉还是挺新奇的. 分析下出现错误的原 ...

随机推荐

  1. Go-获取指定长度随机字符串

    // GetCode 获取一个随机用户唯一编号 func GetCode(codeLen int) string { // 1. 定义原始字符串 rawStr := "abcdefghijk ...

  2. Cloudquery的学习安装与使用

    Cloudquery的学习安装与使用 下载 官方下载地址: https://www.cloudquery.club/download https://pan.baidu.com/s/1a7XOrnMU ...

  3. [转帖]win10下使用Rclone将OneDrive映射到本地磁盘教程(开机自动挂载)

    win10下使用Rclone将OneDrive映射到本地磁盘教程(开机自动挂载) 下载rclone,winfsp和Git bash Rclone. Winfsp. 和 [Git bash](https ...

  4. [转帖]Kafka—配置SASL/PLAIN认证客户端及常用操作命令

    介绍   SASL/PLAIN 是一种简单的 username/password安全认证机制,本文主要总结服务端开启该认证后,命令行客户端进行配置的操作流程. 配置 增加jaas.properties ...

  5. [转帖]linux 磁盘队列深度nr_requests 和 queue_depth

    linux 磁盘队列深度nr_requests 和 queue_depth nr_requests 和 queue_depth 修改配置值 nr_requests 和 queue_depth 区别 i ...

  6. C# AsyncLocal 是如何实现 Thread 间传值

    一:背景 1. 讲故事 这个问题的由来是在.NET高级调试训练营第十期分享ThreadStatic底层玩法的时候,有朋友提出了AsyncLocal是如何实现的,虽然做了口头上的表述,但总还是会不具体, ...

  7. 【springboot整合druid】java.sql.SQLException: url not set

    问题描述 未使用自动装配的机制,实现springboot整合druid时(就是使用druid的jar包,而不是druid-spring-boot-starter)报错 <dependency&g ...

  8. Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务”

    Prompt-"设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务" 通过设计提示(prompt)模板,实现使用更少量的数据在预训练模型 ...

  9. 从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系。

    从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系. 项目效果 以下两张图是系统实际运行效果: 1.项目运行方式 运行环境:Python3 数据库:neo4j 预 ...

  10. C/C++ 原生套接字抓取FTP数据包

    网络通信在今天的信息时代中扮演着至关重要的角色,而对网络数据包进行捕获与分析则是网络管理.网络安全等领域中不可或缺的一项技术.本文将深入介绍基于原始套接字的网络数据包捕获与分析工具,通过实时监控网络流 ...