我有这样的表格:
<%= 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
我的问题是:
我可以隐藏或加密网址参数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>
答案 0 :(得分:2)
加密网址参数毫无意义。为什么不希望用户看到这些值?当然,你可以在将它们添加到表单之前对它们进行加密,但这是否真的有必要?
此外,也许更重要的是,如果这些值基于请求,那么您很可能不需要首先提交它们。 #{request.xxx}
在结果页面上将与表单页面上的相同。有没有什么好理由通过这些?通过将这些作为GET参数提交,您实际上是在向服务器发送冗余信息。 Ruby / Rails已经在加载下一页时自动根据IP地址计算这些值。
这里的问题不在于表单,而在于您应用于设计它的逻辑。我想你可能过度分析了你的情况,需要退一步重新思考问题。