Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.3k views
in Technique[技术] by (71.8m points)

express的res.redirect('back')是干什么用的啊?

我个人查找了官网文档
是下面这样描述的
A back redirection redirects the request back to the referer, defaulting to / when the referer is missing.

res.redirect('back')

自己是这样尝试使用的

app.get('/back',function(req,res){
  res.redirect('back');
})
<a href="/back">后退</a>

我理解为了是后退,可是实际操作的时候,还待在本页不变
有哪位大神知道这res.redirect('back')到底是干啥用的吗?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

这个并不是常规意义上的“退回上一步”。这个操作是将访问重定向到了请求头(request headers)的 referer

当我们从 https://a.com/xxx 跳转到 https://b.com/yyy 时,我们向 yyy 发送的请求头里面,referer 是 https://a.com/xxx。此时调用 res.redirect('back') 就会回退到 xxx 页面。

但是当我们进入到 yyy 页面后,再刷新页面,此时的 referer 会变成 https://b.com/yyy,表现的结果就是,会停留在本页不动。

而你的情况更特殊,100% 是停留在本页,根本不会跳转到上一页。

以为你在 yyy 页面中使用超链接发起一个请求,<a href="/back">后退</a>,此时的 referer 永远是 https://b.com/yyy,所以你会停留在本页面。

你还可以这么理解:你目前在 yyy 页面,点击链接后你跳转到了 back 页面,但是 back 页面的逻辑是回退到上一个页面,于是又跳回了 yyy 页面。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...