hapijs框架如何实现URL携带查询参数的重定向?
解决方案
导致该问题的核心原因是hapi框架默认开启了重定向时剥离源URL查询参数的配置,你可以通过以下几种方式解决:
- 方案1:为当前重定向单独关闭查询参数剥离配置
server.route({ path: '/test', method: 'GET', handler: async (req, h) => { return h.redirect('http://localhost:5000/login/callback?token=a') .settings({ stripQueryString: false }); }, })
- 方案2:使用hapi内置的query方法传递查询参数(更符合框架规范,不受全局配置影响)
server.route({ path: '/test', method: 'GET', handler: async (req, h) => { return h.redirect('http://localhost:5000/login/callback') .query({ token: 'a' }); }, })
- 方案3:全局关闭重定向查询参数剥离配置,在服务初始化时添加对应配置项即可:
const server = Hapi.server({ port: 3000, host: 'localhost', routes: { redirect: { stripQueryString: false } } });
注意事项
如果之前使用过301永久重定向,修改代码后需要清空浏览器缓存或者使用无痕模式测试,避免旧的重定向缓存影响验证结果。
内容的提问来源于stack exchange,提问作者GHOST
相关产品推荐
相关产品推荐

