这里出现了非常奇怪的错误。我们正确地收到了一个请求,形如 "/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
“%2F”已被更改为无效的“%2S”。查询字符串中每个键值对的每个值都向右移动13个字符。每次我们看到此情况时,用户代理都会显示:“Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0)”,但我们也看到用户代理成功地浏览了应用程序。有人见过类似的情况吗?http://www.whatismybrowser.com/告诉我这个用户代理是在运行Windows 7上的IE9,但我们无法再现这个错误。