首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果浏览器刷新了节点,则更改url

如果浏览器刷新了节点,则更改url
EN

Stack Overflow用户
提问于 2017-01-18 19:56:50
回答 2查看 61关注 0票数 0

我有一个节点应用程序。假设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解决方案如下所示

代码语言:javascript
复制
$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';

我也尝试了下面的方法,但也不起作用。

代码语言:javascript
复制
window.onbeforeunload = function(event){
    window.location.href = 'http://www.google.com';
};
EN

回答 2

Stack Overflow用户

发布于 2017-01-18 20:32:54

为什么不在页面加载时将其从url中删除,这样在页面刷新时它就会消失?

代码语言:javascript
复制
history.replaceState(null, '', location.pathname);
票数 0
EN

Stack Overflow用户

发布于 2017-01-18 20:51:23

我不知道这是否是解决问题的最佳方法,但是可以通过访问request.headers对象在Node内部检查这些HTTP头。下面是一个示例代码:

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41718804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档