【问题标题】:get last visited url using ruby on rails使用 ruby​​ on rails 获取上次访问的 url
【发布时间】:2014-03-12 11:41:43
【问题描述】:

我从普通的 html 文件访问 localhost。 html代码是

<!DOCTYPE html>
<html>
<body>
<div id="deal">
<a href="http://localhost:3000">Home</a>
</div>
</body>
</html>

我的文件路径是

file:///home/selva/Desktop/test.html#deal

当我点击Home 链接时,我需要将#deal 加入到rails 项目中。所以我用这个方法URI(request.referer).path

require 'uri'
class RefUrlAuthentication < ::Devise::Strategies::Authenticatable
  def valid? 
    puts "PARAMS: #{URI(request.referer).path}"
  end
end

我已经尝试过request.referer,但没有成功。

这里出现这个错误

ArgumentError (bad argument (expected URI object or URI string)):
lib/custom_authentication.rb:100:in valid?' 

当我使用URI(request.referer).path时出现此错误

我无法弄清楚这段代码有什么问题。如何忽略此错误并获取 url 文件 url.谢谢你的时间。

【问题讨论】:

    标签: ruby-on-rails ruby uri


    【解决方案1】:

    request.referer 可以是nil,特别是因为当用户通过手动输入 url 直接导航到站点时,没有引用。但是,您可以将引用者默认为空字符串:

    URI(request.referer || '').path
    

    旁注:referer 由浏览器设置的 HTTP 标头 HTTP_REFERER 确定。这意味着您不能依赖数据是正确的,甚至是存在的。无论您在身份验证策略中尝试完成什么,都不要将用户是否通过身份验证的决定基于引用者。有人可能会篡改该值。

    【讨论】:

    • 谢谢,现在错误已修复。但是我怎么能拿我的文件路径。
    • 我没有检查它是否有效,在这里我使用该哈希值执行了一些其他功能。所以我应该从文件路径中获取哈希值。
    • 可能你的浏览器没有正确发送referer header。当我说必须小心依赖推荐人时,这就是我的意思。请检查标头是否正确发送。
    • 也许您可以将值存储在会话变量中?这将是在后续请求之间共享数据的标准方式。
    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多