如何从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重定向到/ B,因为服务器告诉客户端页面已移动(状态302),则引用者不是/ A而是链接到/ A或不存在的页面,如果/ A直接请求。

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

  

您可以检查引用者路径以执行此操作

 URI(request.referrer).path 

更好的方法是在查询字符串中传递一些参数,您可以根据其存在重定向。