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

jos*_*osh 6 html javascript http-referer

我需要务实地刷新我的页面(例如location.reload(true);),但还要维护原始的 http 引用标头。

如果您单击浏览器上的刷新按钮,http 引用标头仍然存在。我知道有一的不同的方式来刷新页面中javasript,有没有保持HTTP引用的方法吗?

谢谢!

Set*_*day 5

您不能通过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
}));
Run Code Online (Sandbox Code Playgroud)

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

const referrer = document.referrer;

if (referrer) {

    let query = location.search;

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

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

    location.search = query;  // reloads the page
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您对页面内容没有太多控制,则查询字符串方法可能会出现问题,因为某些看到查询的应用程序(前端和后端)会认为它们需要做一些特殊的事情。因此它有可能产生意想不到的副作用。