Exception之The valid characters are defined in RFC 7230 and RFC 3986
来源:互联网 发布:csgo战绩查询软件 编辑:程序博客网 时间:2024/06/15 23:53
问题描述:
程序部署到window上可以成功运行,但是部署到Linux上报错。火狐调试显示400错误。程序使用http get请求并带json格式参数。
[org.springframework.security.web.context.SecurityContextPersistenceFilter:97]-[DEBUG] -- SecurityContextHolder now cleared, as request processing completedFeb 17, 2017 11:42:39 AM org.apache.coyote.http11.AbstractHttp11Processor processINFO: 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
解决方案:
RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。
RFC3986中指定了以下字符为保留字符:
! * ' ( ) ; : @ & = + $ , / ? # [ ]
还有一些字符,当他们直接放在Url中的时候,可能会引起解析程序的歧义。这些字符被视为不安全字符,原因有很多。
不安全字符有:
->空格 Url在传输的过程,或者用户在排版的过程,或者文本处理程序在处理Url的过程,都有可能引入无关紧要的空格,或者将那些有意义的空格给去掉->引号以及<> 引号和尖括号通常用于在普通文本中起到分隔Url的作用-># 通常用于表示书签或者锚点->% 百分号本身用作对不安全字符进行编码时使用的特殊字符,因此本身需要编码->{}|\^[]`~ 某一些网关或者传输代理会篡改这些字符
此处就是json格式的参数在地址栏传递过程中转义出了问题,一半地址中传递的参数含有中文也遇到了此异常。可以对字符串进行编码解决此问题。js编码的函数有: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。
其中escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法,而encodeURI()用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
阅读全文
0 0
- Exception之The valid characters are defined in RFC 7230 and RFC 3986
- Exception之The valid characters are defined in RFC 7230 and RFC 3986
- Tomcat 报 The valid characters are defined in RFC 7230 and RFC 3986
- The valid characters are defined in RFC 7230 and RFC 3986
- The valid characters are defined in RFC 7230 and RFC 3986 错误
- The valid characters are defined in RFC 7230 and RFC 3986问题分析与解决
- The valid characters are defined in RFC 7230 and RFC 3986
- Tomcat7.0.73-The valid characters are defined in RFC 7230 and RFC 3986
- The valid characters are defined in RFC 7230 and RFC 3986
- The valid characters are defined in RFC 7230and RFC 3986
- 报错:The valid characters are defined in RFC 7230 and RFC 3986
- The valid characters are defined in RFC 7230 and RFC 3986
- 【Tomcat错误系列】Tomcat9.0版本出现The valid characters are defined in RFC 7230 and RFC 3986问题
- Springboot内置Tomcat版本导致的“The valid characters are defined in RFC 7230 and RFC 3986”错误
- 出现The valid characters are defined in RFC 7230 and RFC 3986的原因及解决方式
- Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
- Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
- invalid character found in the request target the valid characters are defined in rfc 7230 and rfc 3
- C++ String类简单实现
- New Document1
- Ubuntu下安装mysql
- eMP开发环境配置说明
- log4j2 升级问题 (包含log4j与slf4j版本)
- Exception之The valid characters are defined in RFC 7230 and RFC 3986
- 小心 Spring MVC 使用陷阱
- C++静态成员函数和静态数据成员
- firewalld防火墙的一些操作
- 360家的又一个插件化框架---RePlugin
- 基于nutz框架理解Ioc容器
- Redis设置有效时间
- JSP页面显示中文乱码解决方法汇总
- Delphi TScrollBar 用于滚动窗口、组件内容