会员登录后跳转到源地址的解决方案

情况1:从百度等站外链接点击访问网站(如在百度搜索网站,然后通过快照链接);

情况2:从手机短信里分享的链接点击访问网站(如从提醒短信里直接点击链接);

情况3:在网站内页面切换时访问网站(如从网站页面A链接到页面B);

情况4:从微信群或公众平台链接点击访问网站(如从微信群里的分享链接或公众平台的菜单链接)。

 

分析:

以上情况的共同点就是都需要通过登录后进行跳转到源地址。

 

解决:

以会员登录控制器为检查入口,引入一个from参数(人为),结合页面请求报头referer参数(HTTP协议自带),对于以上4种情况做判断,第一步判断from参数,第二步判断referer参数,这里之所以采用两步,是因为这样做方便我们处理比较特殊的跳转,如类似情况2的需求。

效果如:http://www.xxx.com/passport/login?from=登录需要跳转到的链接

 

对于情况1,百度等外站链接过来的访问,from参数肯定是不存在的(为空),对于外站链接过来的,在登录后不需要再跳转到外站,所以这里通过域名不一致性直接忽略跳转地址,如果判断referer参数也是外站的网址,也是直接忽略,这样的处理对于以上所有的情况都是通用的。

 

对于情况2,先判断是站内链接,然后再判断from参数,可能是空的(存在更好),referer参数如果为空,那么将from的参数值重置为当前链接。

 

对于情况3,处理是比较简单的,通过读取referer参数值,传递给from参数来记录,这样可以做到全站统一跟踪方式。

 

对于情况4,将自定义的from参数打包到微信登录授权认证的链接里(redirect_uri),让微信认证完成后带回我们的服务器,通过from参数来传递登录后需要跳转的地址。

 

以上四种情况,优先使用from参数的形式来做,referer参数为辅,基本可做到无错误跳转。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值