我需要实际刷新我的页面(例如location.reload(true);
),同时还要维护原始的http referer标题。
如果单击浏览器上的刷新按钮,http referer标头仍然存在。我知道在javasript中有一种ton不同的刷新页面的方法,有没有办法维护http referer?
谢谢!
答案 0 :(得分:1)
您无法通过重新加载强制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
}
但是,如果您无法控制页面内容,则查询字符串方法可能会出现问题,因为查看查询的某些应用程序(前端和后端)会认为他们需要执行某些操作特别。因此它可能会产生意想不到的副作用。