【发布时间】:2016-09-01 21:58:24
【问题描述】:
我需要务实地刷新我的页面(例如location.reload(true);),但也要保持原来的http referer header。
如果您单击浏览器上的刷新按钮,http referer 标头仍然存在。我知道有一个ton 在javasript 中刷新页面的不同方式,有没有办法维护http referer?
谢谢!
【问题讨论】:
标签: javascript html http-referer
我需要务实地刷新我的页面(例如location.reload(true);),但也要保持原来的http referer header。
如果您单击浏览器上的刷新按钮,http referer 标头仍然存在。我知道有一个ton 在javasript 中刷新页面的不同方式,有没有办法维护http referer?
谢谢!
【问题讨论】:
标签: javascript html 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
}
但是,如果您对页面内容没有太多控制权,则查询字符串方法可能会出现问题,因为某些看到查询的应用程序(前端和后端)会认为他们需要做一些特殊的事情。所以它有可能产生意想不到的副作用。
【讨论】: