0

我有这个表格:

<%= form_tag posts_path, :method => :get, :class => "search_nav" do %>
    <%= text_field_tag :search, params[:search], :class => "input-long search-query", :placeholder => "#{t('.search_nav')}"  %>
     <%= hidden_field_tag('ip', "#{request.ip}") %>
     <%= hidden_field_tag('city', "#{request.location.city}") %>
     <%= hidden_field_tag('country', "#{request.location.country}") %>
     <%= content_tag(:div, "",:class => "icon-search") %>
<% end %>

我得到一个类似的网址:

http://localhost:3000/en/posts?utf8=%E2%9C%93&search=check+params&ip=127.0.0.1&city=&country=Reserved

我的问题是:

我可以隐藏或加密 url 参数ip, city and country吗?

我不能使用POST,因为我有分页结果:

<a rel="2" href="/en/posts?city=&country=Reserved&ip=127.0.0.1&page=2&search=check+params&utf8=%E2%9C%93">2</a> 
<a rel="3" href="/en/posts?city=&country=Reserved&ip=127.0.0.1&page=3&search=check+params&utf8=%E2%9C%93">3/a> 
4

1 回答 1

2

加密 URL 参数是毫无意义的。为什么不希望用户看到这些值?当然,您可以在将它们添加到表单之前对其进行加密,但这真的有必要吗?

此外,也许更重要的是,如果这些值是基于请求的,那么您很有可能一开始就不需要提交它们。#{request.xxx}结果页面上的内容与表单页面上的内容相同。有什么好的理由传递这些吗?通过将这些作为 GET 参数提交,您实际上是在向服务器发送冗余信息。Ruby/Rails 已经在加载下一页时根据 IP 地址自动计算这些值。

这里的问题不在于表单,而在于您应用于设计它的逻辑。我认为您可能过度分析了自己的情况,需要退后一步重新思考问题。

于 2012-07-05T15:38:03.753 回答