Rails URL 中 %400 错误

yhuiche · 2014年07月28日 · 最后由 qifengle 回复于 2014年08月01日 · 2246 次阅读

在 url 如果存在%(此处不是 url 编码后产生的%),rails 在解析 url 时会抛出 error。这个问题有没有很好的解决方案。

% 本身就是不安全字符,所以带有的请求不应受理

考虑了一下,如果处理的话会导致 url 解析时歧义的产生。

url 中 % 代表后面是十六进制编码,如果不是,就会解析出错 RFC 3986 规范:http://tools.ietf.org/html/rfc3986#section-2.1

如果需要在 URL 中的使用『%』,用 %25 代替

@qhwa thank you. 不过我遇到的是一个 search 功能时,在 input 框中输入%,不会自动将%urlencode,而导致出错,客户需求在 backend 处理。不过想了下,backend 处理好像是不行,会导致 url 解析时歧义,并且有可能歧义会影响整个 rails 项目的 url 解析。

#4 楼 @yhuiche 普通表单浏览器会转义,客户端提交由客户端转义。

这个问题就是通过浏览器访问时产生的。。奇怪的是同一个 input 框中同时输入中文和%,中文 urlencode 了,但% 却没有 urlencode,

这个 input 框在 ie 中输入中文也是有问题的。encodeURIComponent 可以处理,但与需求不同。

写一个 rack,放在最前面,过滤这些非法字符

@zhangyuan thank you.以前没怎么看过 rack 方面的东西。咕~~(╯﹏╰) b

#8 楼 @zhangyuan 直接将请求 cutdown 也可以吧,毕竟正常情况不会有这种情况,如果有,都是故意的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号