node+vue+axios重定向问题
学校有个项目,多方合作的那种,需要各个系统之间单点登录,我们负责登录入口,预想的方案是:
- 其他系统在localStorage或cookie中没有检测到token,跳转到我们系统进行登录,跳转的url带地址参数
- 我们系统验证成功后,将token携带于headers中,通过重定向请求发给1步骤中带的地址
我们系统前端采用vue + axios,后端nodejs 现情况问题如下: 通过编写另一简单服务(主要是res.sendFile发送html页面),该页面中通过a标签跳转,示例如下:
<a href="http://127.0.0.1:12577/login?redirect=http://localhost:18118/index">点击跳转</a>
vue前端项目也就是上面的12577中,通过this.$route.query.redirect拿到需要跳转的地址,login请求进行后端验证:
验证通过后发送direct请求,进行服务端重定向(target为目标地址):
浏览器中可以看到发出了另外的跳转请求并获取到了内容:
但浏览器url并没有改变,怀疑是测试页面的res.sendFile的原因,所以拿了其他小伙伴的前端项目测试,也是上面的步骤,最后跳转请求报类似跨域的错:
另外,尝试res.location(target)与res.redirect(target),和上面情况一致
疑问:
- 此种方式是否正确?能否满足跨系统间传递token?如不正确,能否告知已经验证通过的方案?
- 测试页面的res.sendFile是否不合适此时的情景?
- 重定向请求跳转到前端为何也会报跨域的问题? 谢谢!!