如何实现cookie的跨站点设置

前提:在域名".myweb.com"下,有两个站点A(a.myweb.com)和B(b.myweb.com),两个站点之间可以进行单点登录。单点登录的逻辑为,当用户访问某个站点下的任何页面时,会判断当前站点下是否有会话信息的cookie,没有则访问Login站点(login.myweb.com),判断Login站点中是否有会话信息的cookie,没有则重定向到登录页,有则跳转到执行判断前的页面;当用户在某个站点登录后,会在当前站点和Login站点中存储当前会话信息的cookie。(单点登录的逻辑由于客观原因现已无法修改)。

问题:在A站点中放一个iframe,iframe的内容是B站点的某个页面,但由于单点登录中的重定向使用的是window.top,所以会导致整个页面进行跳转到B站点中,所以希望在iframe渲染B站点的页面前,将A站点会话信息的cookie设置到B站点中,这样便可实现不访问Login站点从而触发重定向。

我使用的是jq.cookie的插件,但实际开发中,在A站点中执行以下代码是不起效的。通过查阅资料,应该由于cookie跨域设置导致的,请问有什么解决办法吗?

$.cookie('_serviceId','f850...', { domain: '.b.myweb.com',path: '/'});
阅读 5.7k
2 个回答

直接设置主域.xxx.com的cookie是一个办法,另外要看你跳转的时机,如果是服务器的重定向的话,就没法用js做跨网页了,如果是js判断cookie的话倒是可以在跳转之前用iframe跨子域的方法获得cookie。

如果想要强行设置的话,A站点可以和B站点约定一个加密方式,在嵌入iframe的时候,src带上加密过后的cookie内容,B站点检查到该字段就解密出来然后直接set-cookie。类似于token吧

如果希望在myweb.com域下共享cookie,那么把domain改为.myweb.com就好了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题