如何刷新页面并保留Referer标题

时间:2016-05-06 18:17:23

标签: javascript html http-referer

我需要实际刷新我的页面(例如location.reload(true);),同时还要维护原始的http referer标题。

如果单击浏览器上的刷新按钮,http referer标头仍然存在。我知道在javasript中有一种ton不同的刷新页面的方法,有没有办法维护http referer?

谢谢!

1 个答案:

答案 0 :(得分:1)

您无法通过重新加载强制document.referrer的值。但是有一些解决方法。

快速,不引人注意的技巧是将此状态保留在用户sessionStoragelocalStorage中。

// Get the last known referrer
const referrer = JSON.parse(localStorage.getItem('myApp')).referrer;

// Save the current referrer.
localStorage.setItem('myApp', JSON.stringify({
    referrer : document.referrer
}));

您还可以将某些状态与重新加载联系起来,方法是将其存储在查询字符串或片段标识符中。

const referrer = document.referrer;

if (referrer) {

    let query = location.search;

    if (query) {
        query += '&';
    }

    query += 'referrer=' + encodeURIComponent(referrer);

    location.search = query;  // reloads the page
}

但是,如果您无法控制页面内容,则查询字符串方法可能会出现问题,因为查看查询的某些应用程序(前端和后端)会认为他们需要执行某些操作特别。因此它可能会产生意想不到的副作用。