2016-05-06 3 views
0

Мне нужно прагматично обновить мою страницу (например, location.reload(true);), но также сохранить исходный заголовок HTTP-реферирования.Как вы обновляете страницу и сохраняете заголовок Referer

заголовок заголовка http сохраняется, если вы нажмете кнопку обновления в своем браузере. Я знаю, есть ton различных способов обновления страницы в javasript, есть ли способ поддерживать HTTP-референт?

Спасибо!

+0

Возможный дубликат [Как вручную установить заголовок REFERER в Javascript?] (Http://stackoverflow.com/questions/9580575/how-to-manually-set-referer-header-in-javascript) –

ответ

0

Вы не можете заставить значение 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 
} 

Однако, если у вас нет большого контроля над содержанием страницы, строка запроса подход может быть проблематичным, так как некоторые приложения (фронтальные и фоновые), которые видят запрос будут думать, что они должны сделать что-то особенное. Таким образом, у него есть потенциал для непредвиденных побочных эффектов.