【问题标题】:How to perform an HTTP redirect (302) using Rack?如何使用 Rack 执行 HTTP 重定向(302)?
【发布时间】:2015-11-20 22:48:51
【问题描述】:

我正在搞乱我的第一个 Rack 应用程序(这只是为了实验)。

当有电话进来时,我会这样做:

class Application
    def call(env)
      # Totally ignore favicons for the time being
      if env['PATH_INFO'] == '/favicon.ico'
        return [ 404, {'Content-Type' => 'text/html'}, [] ]
      elsif env['PATH_INFO'] == '/'
        return [ 302, {'http-equiv' => "refresh", 'content' => "2;url=http://google.com"}, [] ]
      end
      ...

我知道这很可怕......但是,这又不是一个严肃的项目。

我正在尝试弄清楚如何进行重定向。我所拥有的不起作用。基本上,当您在我的网站上点击 / 时,我想将该要求重定向到 google.com。

【问题讨论】:

  • 您的程序中缺少两个end。没有这些就无法编译
  • 我不打算让它可编译(无论如何你不能单独测试它)。我的意图是用省略号表示有省略的代码。

标签: ruby http rack


【解决方案1】:

这是可重定向到 Google 的工作应用

require 'rack'
require 'rack/server'

class HelloWorld
  def response
    [ 302, {'Location' =>"http://google.com"}, [] ]
  end
end

class HelloWorldApp
  def self.call(env)
    HelloWorld.new.response
  end
end

Rack::Server.start :app => HelloWorldApp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多