您的位置:首页 > 其它

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

2016-04-12 13:55 246 查看
情况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参数为辅,基本可做到无错误跳转。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: