http请求里面的参数有#

snakec0047 2015-12-11 02:27:00
我是用servlet的request.getParameter()接收参数,但是对面的脑残对接在一个参数的值里面有一个#,导致#后面的内容和其他参数都读不出来,
刚才看了一下,request的所有方法都得不到#后面的内容,我觉得应该是request在接收到请求后,已经将url的字符串处理,然后#后面的解析不到,所以我用request的方法处理的不是最原始的url,这个请问有办法解决吗
...全文
793 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸣鸣Amadues 2015-12-12
  • 打赏
  • 举报
回复
看你的情况,你们可能是用了分隔符来传递字符串,先前台用分隔符把几个字段拼起来,再传到后台,用分隔符拆字符串,还原给几个字段。这个做法是可以,但是问题是字符串里包含分隔符时会出问题。 一般不用#这种分隔符,在正常文本里出现的几率太高了,可以用&^这种组合,一般不会出现,不过依然不是完美的解决方法。 正常一般都是用JSON格式传的,把字段的变量名和值一起传,就可以不用分隔符了。
  • 打赏
  • 举报
回复
引用 6 楼 snakec0047 的回复:
[quote=引用 3 楼 shijing266 的回复:] 那就可以request.getContextPath(); 获取全文地址,然后通过"&"去分割, 但是有个风险就是参数里面也包含了&
request.getQueryString()可以去到?后面的字符串,可是已经被tomcat给过滤了[/quote] 那就传输之前处理吧
snakec0047 2015-12-11
  • 打赏
  • 举报
回复
引用 3 楼 shijing266 的回复:
那就可以request.getContextPath(); 获取全文地址,然后通过"&"去分割, 但是有个风险就是参数里面也包含了&
request.getQueryString()可以去到?后面的字符串,可是已经被tomcat给过滤了
snakec0047 2015-12-11
  • 打赏
  • 举报
回复
引用 3 楼 shijing266 的回复:
那就可以request.getContextPath(); 获取全文地址,然后通过"&"去分割, 但是有个风险就是参数里面也包含了&
我刚刚搞了搞,发现问题不在java这边,应该是tomcat实现HttpServletRequest接口的时候把#后面的内容给过滤掉了. reques.getContextPath()获取不了全文地址啊,只能获取问号之前的根路径
tony4geek 2015-12-11
  • 打赏
  • 举报
回复
为什么参数传入的时候不处理下呢。 encodeURIComponent
snakec0047 2015-12-11
  • 打赏
  • 举报
回复
引用 1 楼 shijing266 的回复:
建议: 1、把这种特殊字符在传输之前,用其他字符代替,到后台之后再去替换 2、使用转义字符:参考
有没有可能在HttpRequest的类内部写个方法,或者做个判断让我可以拿到原始的url
  • 打赏
  • 举报
回复
那就可以request.getContextPath(); 获取全文地址,然后通过"&"去分割, 但是有个风险就是参数里面也包含了&
  • 打赏
  • 举报
回复
建议: 1、把这种特殊字符在传输之前,用其他字符代替,到后台之后再去替换 2、使用转义字符:参考

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧