ruby-on-rails - rails 错误 : No HTTP_REFERER was set in the request to this action

标签 ruby-on-rails ruby http

我正在开发一个新的 Rails 应用程序。但发现错误:

ActionController::RedirectBackError in UsersController#show

No HTTP_REFERER was set in the request to this action, so redirect_to :back could not be called successfully. If this is a test, make sure to specify request.env["HTTP_REFERER"].

我的代码:

rescue_from CanCan::AccessDenied do |exception|
     redirect_to :back
end

我对这个错误有一些疑问:

  • 什么是 HTTP_REFERER?
  • 为什么重定向到后面会触发这个错误?

谁有好主意?

最佳答案

什么是 HTTP_REFERER?

HTTP referer 是一个 HTTP header 字段,用于标识链接到所请求资源的网页地址(即 URI 或 IRI)。这是由 ActionController::Request 对象设置的。

为什么重定向到后面会触发这个错误?

这通常在未设置 request.env["HTTP_REFERER"] 时发生。 (我也想知道在什么情况下设置和不设置)

你可以引用这个answer解决您的问题。

(或者)我非常愿意为访问被拒绝定义一个自定义页面并重定向到它而不是redirecting :back(我认为这是个坏主意)

例如来自 cancan gem 文档,

rescue_from CanCan::AccessDenied do |exception|
    render :file => "#{Rails.root}/public/403.html", :status => 403, :layout => false
    ## to avoid deprecation warnings with Rails 3.2.x (and incidentally using Ruby 1.9.3 hash syntax)
    ## this render call should be:
    # render file: "#{Rails.root}/public/403", formats: [:html], status: 403, layout: false
end

希望这对您有所帮助!

关于ruby-on-rails - rails 错误 : No HTTP_REFERER was set in the request to this action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35917685/

相关文章:

ruby - 从 block 内调用实例方法

python - 如何通过 CherryPy 摘要身份验证获取用户名

http - Karma 测试中出现错误 : No provider for HttpService!

http - 哪个 HTTP 状态代码表示 "Not Ready Yet, Try Again Later"?

ruby-on-rails - jquery ajax 422 在 Chrome 中取得成功

ruby-on-rails - 如何加快 Assets 编译以进行测试?

ruby-on-rails - 如何一步将Rails中的X个月转换为Y天?

ruby-on-rails - 运行rails服务器时没有 'jcode' gem

Ruby 日期参数超出范围

ruby - FireStore for Ruby - 如何订阅文档更改