The valid characters are defined in RFC 7230 and RFC 3986 (encodeURIComponent)

22 篇文章 0 订阅
15 篇文章 0 订阅

这是一篇本来早就打算写,但又一直忘了写的小记录。由于昨天部署项目的时候,突然又重现这个问题,所以今天就记录一下。

问题是这样的,jsp请求后台时,传参出问题,导致控制台报错。错误如下:


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

截图如下:

jsp对应参数 如下:有问题的我已经圈起来了,注意第一个红框的数据

原因就在于  url参数中存在着 特殊字符,所以导致报错

 RFC3986 文档规定,Url 中只允许包含英文字母(a-zA-Z )、数字(0-9 )、-_.~4 个特殊字符以及所有保留字符。
Url 可以划分成若干个组件,协议、主机、路径等。RFC3986 中指定了以下字符为保留字符: ! * ' ( ) ; : @ & =+ $ , / ? # [ ]

上面 URL中的 scriptes参数中的 "{}"就是非法字符,直接传递就会出现问题

解决办法:使用  encodeURIComponent 编码后再传递给后台

修改后:问题得以解决

 

JavaScript encodeURIComponent() 函数


定义和用法

encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

语法

encodeURIComponent(uri)

实例

Example

使用 encodeURIComponent() 对 URI 进行编码:

<script>

    var uri="http://w3cschool.cc/my test.php?name=ståle&car=saab";
    document.write(encodeURIComponent(uri));

</script>

以上实例输出结果:

http%3A%2F%2Fw3cschool.cc%2Fmy%20test.php%3Fname%3Dst%C3%A5le%26car%3Dsaab

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一彡十

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值