1

我的应用程序在 rails 中。

我有一个获取浏览器请求(当用户单击另一个网站中的链接时)到我的应用程序,其中包含重要的查询字符串参数,例如 http://example.com?logintoken=hjhzjkdhz

但我觉得我应该在我的控制器中使用这个登录令牌,但不想在呈现页面后在浏览器 url 栏上向用户显示。所以简而言之,我想最后在浏览器的 url 栏中只显示http://example.com

有没有办法只清除查询字符串?

我看到最后重定向到http://example.com是实现此目的的一种方法。还有其他方法吗?

4

2 回答 2

1

另一种方法是将您的请求更改为 POST 并隐藏消息中的参数。

于 2014-12-13T17:13:25.783 回答
0

如果没有重定向,你就无法做到这一点......好吧,从技术上讲,如果你在渲染后操纵浏览器状态(历史推送和弹出),你就可以做到。

在 rails 方面,您需要使用以下变量重定向并将您的 URL 参数传递给服务器变量并重定向到操作,而不使用参数:

def myaction
    if params.any?
        session[:myaction_params]={}
        session[:myaction_params]=params
        redirect_to myaction_path
    elsif session[:myaction_params] && session[:myaction_params].any?
        # use your params like this
        # params[:logintoken] will now be session[:myaction_params][:logintoken]
        # apply logic here
    else
        # do something else if there are no params
        # redirect_to somewhere
    end    
end
于 2014-12-13T12:44:55.237 回答