在get请求中参数过长或者带有 |,*,]等等字符时,请求参数会处理失败报错(已解决)

首先如何我们直接传(报错)

			//参数带有敏感字符
			var n ="A0009314|20200528000106|1910661|15500508001215|CYQ-101012-015" 
			
			 parent.layer.open({
                    type: 2,
                    title: '重复记录明细查看',
                    area: ['80%', '60%'], //宽高
                    fix: false, //不固定
                    maxmin: true,
                    content: '/goCF?ytm='+n+'&name='+$("#yh").val(),
                    success:function () {
                    }
                });

正确的请求示例(OK成功)

				//参数带有敏感字符
				var n ="A0009314|20200528000106|1910661|15500508001215|CYQ-101012-015" 
				parent.layer.open({
                    type: 2,
                    title: '重复记录明细查看',
                    area: ['80%', '60%'], //宽高
                    fix: false, //不固定
                    maxmin: true,
                    content: '/goCF?ytm='+encodeURIComponent(n)+'&name='+$("#yh").val(),
                    success:function () {
                    }
                });
### GET 请求 URL 中括报错解决方案 在处理 GET 请求,URL 参数中的特殊字符可能会引起解析错误。具体到括的情况,在某些服务器配置下(如 Tomcat),如果严格遵循 RFC 3986 规范,则会因为非法字符而导致 405 错误或其他类型的响应异常[^2]。 为了确保带有参数能够被正确递并解析,建议采取以下措施: #### 编码特殊字符 最直接有效的方法是对 URL 中可能出现的问题字符进行百分比编码(Percent-Encoding)。按照 RFC 3986 的规定,只有特定集合内的字符可以直接出现在 URL 中,其他任何不在该范围内的字符都应当转换为其对应的十六进制表示形式[^3]。 对于圆括而言: - 左括 `(` 应替换为 `%28` - 右括 `)` 应替换为 `%29` 因此,假设原始查询字符串部分包含如下内容: `?query=example(text)` 则应将其修改为: `?query=example%28text%29` 这样做的好处是可以兼容大多数 Web 服务端实现,并且不会违反 URI 标准规范的要求。 #### 修改服务器设置 另一种可能的选择是在不影响安全性的前提下调整应用服务器的相关配置项。例如,在较新的 Tomcat 版本中,默认启用了严格的 URL 解析模式。可以通过编辑 conf/context.xml 文件来放宽此限制,允许更多种类的字符通过而不触发错误页面显示。 不过需要注意的是,更改默认行为通常意味着潜在的安全风险增加,所以在做出此类改动之前务必充分评估利弊得失,并考虑是否有更优解法可用。 ```xml <Context> <!-- Other settings --> <Parameter name="relaxedQueryChars" value="[]|" /> </Context> ``` 上述 XML 片段展示了如何向已有的上下文中添加额外可接受的查询字符集定义。这里以方括 `[ ]` 和竖线 `|`为例进行了说明;实际操作可根据需求加入所需的符列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值