2017-01-18 4 views
0

У меня есть приложение-узел. Предположим, что URL-адрес выглядит следующим образом:изменить URL-адрес, если обновленный браузер узла

http://www.testurl.com/?access_token=1234. Этот URL-адрес генерируется Spotify, так как для использования их API требуется access_toke.

Только если пользователь обновит страницу, я хочу, чтобы URL-адрес удалял последнюю часть URL-адреса и просто загружал http://www.testurl.com. Важно, чтобы это происходило только при обновлении страницы, чтобы пользователь снова аутентифицировался.

I have tried these js solutions, но ни один из них не работает. Я думаю, что они не работали для оригинального плаката, так как не было принятого ответа.

Я видел, что можно detect browser refresh using php. Кто-нибудь знает, можно ли обнаружить эквивалент, используя node?

решение

РНР выглядит следующим образом

$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0'; 

Я также попытался следующие, что не работает.

window.onbeforeunload = function(event){ 
    window.location.href = 'http://www.google.com'; 
}; 

ответ

0

Почему не вы, а не просто удалить его из URL на странице загрузки, так что на странице обновить его нет?

history.replaceState(null, '', location.pathname); 
0

Не знаю, если это лучший способ решить все, что вы пытаетесь сделать, но эти заголовки HTTP могут быть проверены на наличие внутри узла посредством доступа request.headers объекта. Вот пример кода:

const http = require('http'); 
 
const url = require('url'); 
 

 
http.createServer(function(req, res) { 
 
\t res.writeHead(200, { 
 
\t \t 'Content-Type': 'text/html' 
 
\t }); 
 

 
\t // Home controller 
 
\t if(url.parse(req.url).path === "/") { 
 

 
\t \t if(req.headers["cache-control"] && req.headers["cache-control"] === "max-age=0") { 
 
\t \t \t console.log("User refreshed"); 
 
\t \t } else { 
 
\t \t \t console.log("User did not refresh"); 
 
\t \t } 
 

 
\t \t res.end("<h1>Hello there!</h1>"); 
 
\t } else { 
 
\t \t res.statsCode = 404; 
 
\t \t res.end("Not found"); 
 
\t } 
 

 
}).listen(3000);

Смежные вопросы