javascript - 如何在 Node.js 中使用引荐来源网址保护路由
问题描述
我正在尝试保护我的 node.js 应用程序中的路由,这样如果用户想要转到/post
他们必须来自的页面/blog
。如果用户来自其他任何地方,/blog
他们将被重定向到/
. 我有以下使用 http 引荐来源网址的代码
let ref = req.headers.referer;
if ((ref === undefined) || (!ref.includes('blog'))) {
res.redirect('/')
}
如果我使用 console.log 进行测试,它似乎运行良好,但如果我执行 res.redirect,我会收到错误
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
.
如何使用引荐来源网址来保护路线。
如果有任何其他方法可以在不使用引用的情况下完成此操作:欢迎所有建议。
提前致谢
解决方案
试试这个,在你的app.js文件中包含这个。
const express = require('express');
const app = express();
app.get('/',(req, res, next)=>{
res.send('Ready')
});
app.get('/test',(req, res, next)=>{
res.send('Ready')
});
// Below (*) will consider unwanted urls
app.use('/*', function(req, res, next) {
res.redirect('/')
});
app.listen(4000);
仅供参考,如果您尝试demo.com/unkownurl将重定向到根目录,如demo.com/
推荐阅读
- typescript - 开玩笑的运行时错误 - TypeError: Class extends value undefined is not a constructor or null
- elasticsearch - Elasticsearch 7.6.2 服务未在安装了 cPanel 的 CentOS 7.x 上启动
- java - Java Spring Boot:如何查找具有多个 Id 的所有行,例如 findAllByAge(ArrayList
年龄列表)? - postgresql - 如何在 postgresql 中查询 JSON 数组
- javascript - Event.type 在 jQuery 中没有按预期工作
- javascript - 为什么 Node.js 一些内部模块注册外部引用而其他模块没有?
- python - 根据python中的键将字典拆分为不同的字典?
- html - 如何在 html 文件中使用资源图像(在我的项目中定义)作为 bing 地图的图标
- javascript - 单击按钮后如何创建多个输入(Javascript)
- docker - 使用 Docker 和 Docker-Swarm 运行 Symfony 5 项目的最佳实践