这里很奇怪的错误我们正确地收到了一个像“/ users / 8788234”这样的请求
在Rails中,我们称之为:
redirect_to(:controller => 'login',:from_external_page => true,:on_login => request.env['REQUEST_URI']) and return
我们在Rails日志中看到(正如我们预期的):
重定向到
https://sampleapp.com/login?from_external_page=true&on_login=%2Fusers%2F8788234
但是,从IP看到的下一个请求中,查询字符串的值被加扰:
Started GET "/login?from_external_page=gehr&on_login=%2Shfref%2S8788234" for xx.xxx.xxx.xxx at yyyy-mm-dd
ArgumentError: invalid %-encoding
(该/被更改为%2S无效).查询字符串中每个键值对的每个单个值都被移动了13个字符.每次我们看到这一点,用户代理读取:“Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)”,但我们也看到用户代理成功导航应用程序.有没有人见过这样的东西? http://www.whatismybrowser.com/告诉我,这个用户代理是在Windows 7上运行的IE9,但是我们还没有能够重现错误.
解决方法
这当然是编码问题.我现在使用Rails 4,以下是我当前项目的示例查询字符串.请注意,querystring中的第一个参数是在您的querystring中缺少的“utf8 =✓”.
profiles?utf8=✓&min_age=1&max_age=99&min_height=1&max_height=6&min_weight=1&max_weight=400