1

我正在使用多个重定向,我想从 A->B->C->A 重定向。

所以在 B 中,我将路径 A 保存为

@previouspage = request.referer

所以此时@previouspage = A,但是当我在C中调用@previouspage时,并没有带来B中保存的硬值,而是找到了自己的相对request.referer,也就是B。

所以在 C 中,@previouspage = B(因为我认为 Ruby 中的变量是软链接)

我将如何保存 request.referer 在 B 点的任何值,然后将该 URL 保存到我以后可以访问的变量中?

4

3 回答 3

3

HTTP 是一种无状态协议:请求之间不会记住变量。如果要在请求之间保存状态,则可以使用会话。在 Rails 中是这样完成的:

在 B 中:

session[:page_a] = request.referer

在 C 中:

@next_page = session[:page_a]

Rails 安全指南从会话及其漏洞开始。你可能想检查一下。

于 2012-07-09T11:41:17.793 回答
2

完成这项工作需要三件事

  • 使用会话:sessions[:original_page]=request.referrer
  • 考虑登录后会话刷新的事实(检查是否为零)
  • 记得在控制器中使用 session[:original_page]=nil 后立即设置它。
于 2012-07-09T15:23:03.190 回答
2

Rails 变量不会在请求之间保留。如果你想保存一些数据,你应该:

  • 将其保存在(会话)cookie 中
  • 将其保存在数据库中
  • 从袖子里拿出一些技巧并将引用者作为参数或类似的东西传递,但根本不推荐。
于 2012-07-09T11:40:21.923 回答