Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails错误:此操作的请求中未设置HTTP\U引用程序_Ruby On Rails_Ruby_Http - Fatal编程技术网

Ruby on rails Rails错误:此操作的请求中未设置HTTP\U引用程序

Ruby on rails Rails错误:此操作的请求中未设置HTTP\U引用程序,ruby-on-rails,ruby,http,Ruby On Rails,Ruby,Http,我正在开发一个新的rails应用程序。但发现了一个错误: ActionController::UsersController#show中的RedirectBackError 此操作的请求中未设置HTTP\U REFERER,因此无法成功调用重定向到:back。如果这是一个测试,请确保指定request.env[“HTTP_REFERER”] 我的代码: rescue_from CanCan::AccessDenied do |exception| redirect_to :back e

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

ActionController::UsersController#show中的RedirectBackError

此操作的请求中未设置HTTP\U REFERER,因此无法成功调用重定向到:back。如果这是一个测试,请确保指定request.env[“HTTP_REFERER”]

我的代码:

rescue_from CanCan::AccessDenied do |exception|
     redirect_to :back
end
我对这个错误有一些疑问:

  • 什么是HTTP_REFERER
  • 为什么重定向到back会触发此错误
有人有好主意吗?

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

为什么重定向到back会触发此错误? 这通常发生在未设置
request.env[“HTTP\u REFERER”]
时。(我还想知道在哪种情况下设置了和未设置)

您可以参考此解决您的问题

(或者)我更愿意为拒绝访问定义一个自定义页面,并将其重定向到该页面,而不是
重定向: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

希望这有帮助

谢谢!我想我知道触发错误的原因,因为我手动修改了URL,所以HTTP\U引用器不存在。