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

How do you refresh a page and persist the Referer header

本文关键字:Referer 标头 何刷新 刷新      更新时间:2023-09-26

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

如果单击浏览器上的刷新按钮,http-referer标头将持续存在。我知道在javasript中有很多不同的刷新页面的方法,有没有一种方法可以维护http-referer?

谢谢!

您不能强制document.referrer的值为重载中特定的值。但也有变通办法。

一种快速、不引人注目的技术是在用户的sessionStorage或localStorage中保持这种状态。

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

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