Answers:
document.referrer
在许多情况下,如果用户通过单击链接进入当前页面,则将获得用户访问的最后一页的URL(与直接在地址栏中键入,或者在某些情况下,我认为通过提交表单来访问?)。由DOM级别2指定。这里更多。
window.history允许导航,但出于安全和隐私原因,不能访问会话中的URL。如果有更详细的URL历史记录,那么您访问的每个站点都可以看到您去过的所有其他站点。
如果您要处理的是在您自己的站点中移动的状态,那么使用一种常规的会话管理技术(cookie数据,URL参数或服务器端会话信息)可能不那么脆弱,而且肯定会更有用。
document.referrer但并不总是有效。 $.cookie("previousUrl", window.location.href, {path:"/"});。
如果您想在不知道URL的情况下转到上一页,则可以使用新的History api。
history.back(); //Go to the previous page
history.forward(); //Go to the next page in the stack
history.go(index); //Where index could be 1, -1, 56, etc.
但是您不能在不支持HTML5历史记录API的浏览器上操纵历史记录堆栈的内容
有关更多信息,请参阅文档
document.referrer 在所有情况下均与实际网址不同。
我有一个应用程序,需要在其中建立一个包含2个框架的框架集。一帧是已知的,另一帧是我要链接的页面。这似乎document.referrer很理想,因为您不必将实际文件名传递给框架集文档。
但是,如果您稍后更改底部框架页面然后使用history.back()它,则不会将原始页面加载到底部框架中,而是重新加载document.referrer,结果框架集消失了,您又回到了原始开始窗口。
花了我一点时间来理解这一点。因此,在历史记录数组中,document.referrer不仅是URL,而且显然也是引用程序窗口规范。至少,这是我目前可以理解的最好方法。
那些使用Node.js和Express的用户可以设置一个会话cookie,该会话cookie会记住当前页面的URL,从而使您可以在下一个页面加载时检查引荐来源网址。这是使用express-session中间件的示例:
//Add me after the express-session middleware
app.use((req, res, next) => {
req.session.referrer = req.protocol + '://' + req.get('host') + req.originalUrl;
next();
});
然后,您可以像这样检查引荐来源网址cookie的存在:
if ( req.session.referrer ) console.log(req.session.referrer);
不要假设此方法始终存在引荐来源网址Cookie,因为在以前的URL是另一个网站,清理或创建会话(首次加载网站)的实例上,该网址将不可用。