我有一个节点应用程序。假设url是这样的:
http://www.testurl.com/?access_token=1234。这个url是由Spotify生成的,因为需要这个access_token来使用他们的API。
只有当用户刷新页面时,我才希望url删除url的最后一部分,只加载http://www.testurl.com。重要的是,它只在页面刷新时发生,以便用户必须再次对自己进行身份验证。
I have tried these js solutions,但它们都不起作用。我认为他们也不适用于原始海报,因为没有公认的答案。
我已经看到了detect browser refresh using php是可能的。有没有人知道是否有可能使用node来检测等价物
php解决方案如下所示
$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';我也尝试了下面的方法,但也不起作用。
window.onbeforeunload = function(event){
window.location.href = 'http://www.google.com';
};发布于 2017-01-18 20:32:54
为什么不在页面加载时将其从url中删除,这样在页面刷新时它就会消失?
history.replaceState(null, '', location.pathname);发布于 2017-01-18 20:51:23
我不知道这是否是解决问题的最佳方法,但是可以通过访问request.headers对象在Node内部检查这些HTTP头。下面是一个示例代码:
const http = require('http');
const url = require('url');
http.createServer(function(req, res) {
res.writeHead(200, {
'Content-Type': 'text/html'
});
// Home controller
if(url.parse(req.url).path === "/") {
if(req.headers["cache-control"] && req.headers["cache-control"] === "max-age=0") {
console.log("User refreshed");
} else {
console.log("User did not refresh");
}
res.end("<h1>Hello there!</h1>");
} else {
res.statsCode = 404;
res.end("Not found");
}
}).listen(3000);
https://stackoverflow.com/questions/41718804
复制相似问题