在 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/