【问题标题】:Make request from rails console return 302从 Rails 控制台发出请求返回 302
【发布时间】:2014-09-03 09:55:57
【问题描述】:

在 Rails 4.0.3 中,我尝试从 rails 控制台发送 http get 请求:

app.get '/'

它返回响应代码 302 重定向。

Started GET "/" for 127.0.0.1 at 2014-09-03 11:57:11 +0200
=> 302

但是,此页面是公共页面,不应重定向。

任何线索我怎样才能使它工作?

【问题讨论】:

  • rails 4.1.5 返回200
  • 你为root设置了哪些路由?

标签: ruby-on-rails ruby-on-rails-4 rails-console


【解决方案1】:

我有同样的问题,但那是因为我的应用程序需要作为第一个登录,所以我执行以下命令:

>> ApplicationController.allow_forgery_protection = false
>> app.post '/users/sign_in', :user => {:email => "user@example.com", :password => "12345"}

这些命令将返回 302,您现在可以进入根路径,如下所示:

>> app.get '/'

这将返回Completed 200 OK,这similar question 可能会帮助你。

【讨论】:

  • 嗨 Mohamed,我尝试了您的解决方案,但它不起作用。正如我所说,主页是公共页面,不需要登录。
【解决方案2】:

我终于找到了问题所在。它是由我用来检查名为browser 的 UserAgent 的 Rails 中间件 gem 引起的。

我有以下代码只允许“现代浏览器”访问我的网站

Rails.configuration.middleware.use Browser::Middleware do
next if (browser.bot? or browser.search_engine?) 
redirect_to upgrade_path unless browser.modern?
end

由于 rails 控制台没有 UserAgent 设置,它总是重定向到 /upgrade。

我将代码更新为:

Rails.configuration.middleware.use Browser::Middleware do
next if (browser.bot? or browser.search_engine? or (Rails.env == 'test') or (Rails.env == 'development') )
redirect_to upgrade_path unless browser.modern?
end

现在可以了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2016-08-27
    • 2018-04-08
    相关资源
    最近更新 更多