如何重定向回 Sinatra 中的路线?

Han*_*iao 1 ruby request sinatra

在 Sinatra 中,如何重定向回路线?

require 'sinatra'

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

get "/B" do 
  redirect request.referer
end
Run Code Online (Sandbox Code Playgroud)

这是代码,我希望“/B”带我回到“/A”。

现在,在浏览器中,在“/C”中,向“/A”发送​​一个获取请求。然后我会回到“/C”。原因是:
“request.referer”记录的是“/C”,因为“/A”中的重定向是由服务器发起的,不算是目标页面的referrer。

有一种 JavaScript 方法可以解决它(放在 /A 上):

<script type="text/javascript">window.location = '/B';</script>
Run Code Online (Sandbox Code Playgroud)

(从:如何从 Sinatra 中的特定页面重定向网页?

我的问题是如何重定向回服务器端的路由?

the*_*ter 6

就说吧redirect back。从Sinatra README(向下滚动到“浏览器重定向”):

您还可以通过重定向返回轻松重定向回用户来自的页面:

get '/foo' do
  "<a href='/bar'>do something</a>"
end

get '/bar' do
  do_something
  redirect back
end
Run Code Online (Sandbox Code Playgroud)