如何从Sinatra中的特定页面重定向网页? [英] How to redirect web page from a specfic page in Sinatra?

查看:28
本文介绍了如何从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完成?


我试过了,但仍然为空

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 Referrer信息可通过:

request.referrer

但如果它是由服务器发起的重定向,则不能算作对目标页面的引用。简而言之:

如果/A因为服务器告诉客户端页面已移动(状态302)而重定向到/B,则引用人不是/A,而是链接到/A的页面;如果直接请求/A,则不是链接到/A的页面。

回答这个问题:您必须使用客户端重定向来实现您的想法。JavaScript可以做到这一点(放在/A上):

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

这篇关于如何从Sinatra中的特定页面重定向网页?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆