使用Egg.js的ctx.redirect跳转时浏览器不发送Referer的原因及实现需求咨询
Egg.js的ctx.redirect跳转时浏览器不发送Referer的原因及实现需求咨询
嘿,各位大佬,我碰到个困扰的问题,想跟大家请教下:
我用Egg.js启动了两个服务,分别对应test1.com和test2.com。其中test1的服务里通过ctx.redirect来跳转到test2的地址,代码大概是这样的:
// test1 egg router.get('/render', controller.home.render); async render() { const { ctx } = this; ctx.redirect('https://test2.moomoo.com'); }
而test2的服务里会打印请求的Referer,同时渲染页面:
// test2 egg async render() { const { ctx } = this; console.log('ctx.header.referer', ctx.header.referer); await this.ctx.render('/index.html', { data: 'test2', }); }
结果我发现,用这种方式跳转后,浏览器完全不会发送Referer——不管是后端ctx.header.referer还是前端的document.referrer都是空值。但如果我在前端用window.location来跳转的话,Referer就能正常显示test1的地址。
我特别想搞明白这是为什么?另外有没有办法实现用ctx.redirect跳转时,让test2能获取到来自test1的Referer呢?
备注:内容来源于stack exchange,提问作者candise xxx
相关产品推荐
相关产品推荐

