javascript - 如何从 Sinatra 中的特定页面重定向网页?

标签 javascript ruby sinatra

在 Sinatra 中,如何从特定页面重定向网页?

require 'sinatra'

get "/A" do
    redirect '/B' 
end

get "/B" do 
    # if comes from A
    #     "IT COMES FROM A"    
    # else not from A
    #     "NOT FROM A , REDIRECT TO C"
    #     redirect '/C'
    # end
end

我想学习如何做到这一点?

我可以使用 JavaScript 或 HTML 来完成我想做的事情吗?

或者,它必须在 Sinatra 中完成?

<小时/>

我尝试过这个,但它保持 null ,

get "/B" do
    mypath = URI(request.referer || '').path
    if mypath == '/A'
      "hi i am b , u come from a"
    else
      "--#{request.referrer}--"
      redirect '/C'
  end
end

最佳答案

可以通过以下方式检索 HTTP 引荐来源网址的信息:

request.referrer

但如果是服务器发起的重定向,则不算是目标页面的引荐来源网址。简而言之:

如果/A由于服务器告诉客户端页面已移动(状态302)而重定向到/B,则引用者不是/A,而是链接到/A的页面,或者如果直接请求/A,则什么也没有。

回答这个问题:您必须使用客户端重定向才能使您的想法发挥作用。 Javascript 可以做到这一点(放在/A 上):

<script type="text/javascript">window.location = '/B';</script>

关于javascript - 如何从 Sinatra 中的特定页面重定向网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26016053/

相关文章:

ruby - 使用 omnicontacts gem 在 ruby​​ 脚本中获取雅虎联系人

ruby - 从 config.ru 设置 Sinatra 应用设置

javascript - 在文本字段中显示跨度标记值

由数据库填充的 PHP 下拉列表将使用 javascript

ruby-on-rails - 按父对象对评论进行分组,按最旧的评论对父对象进行排序

ruby-on-rails - 每个 RSpec 测试运行都需要 rake db :test:prepare or equivalent using Rails 4. 2.5

javascript - 在javascript中创建复选框

javascript - 如何使用 jquery $.get 在查询字符串参数中传递 json

ruby-on-rails - 在同一模型上具有多个关联的多态关联

facebook - Sinatra 使用 gem oauth2 登录 Facebook OAuth 2.0