怎样在跨域的两个页面之间实现实时通信???

浴火_凤凰 2010-03-15 02:28:15
我现在在www.aaa.com/aaa.aspx插入了一个JS文件,
地址为www.bbb.com/js/insert.js
要实现的功能是单击www.aaa.com/aaa.aspx页面中的一个按钮之后,
弹出一个www.bbb.com/con/asp/bbb.aspx文件,
插入insert.js的目的就是在打开bbb.aspx页面的时候可以传一些参数给
bbb.aspx页面,比如插入页面的cookie,这样就能实现
如果www.aaa.com/aaa.aspx页面的用户已经登录,就是说写了cookie
那样在打开www.bbb.com/con/asp/bbb.aspx页面的时候,此页面的用户就会自动登录。
但是现在领导要求要实时的检测。
就是说如果www.aaa.com/aaa.aspx页面的用户退出了或者换了另一个,
则www.bbb.com/con/asp/bbb.aspx页面的用户也必须实时的退出或者换另一个。

急!急!急!
希望各位高手帮帮忙,给个思路啊!!!
谢谢!!!
...全文
278 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
浴火_凤凰 2010-04-21
  • 打赏
  • 举报
回复
真的没有人知道了吗???
myhope88 2010-04-19
  • 打赏
  • 举报
回复
第一次遇到这种需求,学习下
浴火_凤凰 2010-04-19
  • 打赏
  • 举报
回复
看来不好实现啊。。。。
leonbingo 2010-03-23
  • 打赏
  • 举报
回复
不是了,就是a在关键的时候传递参数给iframe,比如登录,退出,让b写好cookie,就行了,但是,为了让a和b的cookie时间上同步,a里面必须包含一个iframe,每次访问a的页面,b的一个页面也被访问了,这样才不至于b的cookie早于a过期
浴火_凤凰 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 leonbingo 的回复:]
bbb要达到正常的登录状态,也需要验证一下用户名和密码,按照楼主这个逻辑,bbb的js在aaa中被载入,一个方法去检测aaa的cookie,然后根据cookie的信息,向bbb的页面传值,我说的src是这样的,首先,执行了bbb的js方法,检测cookie里面有没有值存在,然后动态向aaa的页面里面插入如下脚本,这个意思也就是让bbb的页面接收到参数了。
<iframe src="bbbpage……
[/Quote]
那是不是要不断的刷新这个iframe啊?重新给他参数???
浴火_凤凰 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xierfly 的回复:]
SSO也是同样一个domain吧。可以用Jquery结合JSON实现跨站读取数据。
[/Quote]
能具体说一下思路吗?谢谢!!!
浴火_凤凰 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 net_lover 的回复:]
sso是很好的办法,可以跨越的,就像Live Id
[/Quote]
以前没有使用过SSO,昨天查了一下,还是不太明白。
sso的具体思路是怎样的?
浴火_凤凰 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xuyiazl 的回复:]
同步必须需要对方提供接口哈,,,不可能自己开发个网站 来修改腾讯的网站吧。没权限的哦。
[/Quote]
对方的网站我不能随便更改。
但是对方允许我向他的网站插入一个外部JS文件。
还有对方登陆后写入的cookie项的名称我也知道。
目前来说我就是想实时的获取到对方的cookie。
你有什么好的建议吗?
leonbingo 2010-03-16
  • 打赏
  • 举报
回复
bbb要达到正常的登录状态,也需要验证一下用户名和密码,按照楼主这个逻辑,bbb的js在aaa中被载入,一个方法去检测aaa的cookie,然后根据cookie的信息,向bbb的页面传值,我说的src是这样的,首先,执行了bbb的js方法,检测cookie里面有没有值存在,然后动态向aaa的页面里面插入如下脚本,这个意思也就是让bbb的页面接收到参数了。
<iframe src="bbbpage.aspx?username=xxx&password=yyy"></iframe>

这样bbbpage看到用户名和密码做了验证以后,就可以在bbbpage.aspx里面写好cookie,那么进入bbb就不需要登录了,不过,这要要求cookie里面保存了密码,不然的话,bbbpage.aspx没办法做验证,如果默认读取到有cookie记录了用户名就算登录,那么很容易被欺骗,至于用户更换,也很容易啊,检测一下bbb的cookie里面的用户名是否更换就好了,还有退出也是容易的,你检测到了cookie里面没有值了,就把bbb的cookie变成空
xierfly 2010-03-15
  • 打赏
  • 举报
回复
SSO也是同样一个domain吧。可以用Jquery结合JSON实现跨站读取数据。
孟子E章 2010-03-15
  • 打赏
  • 举报
回复
sso是很好的办法,可以跨越的,就像Live Id
mail_ricklee 2010-03-15
  • 打赏
  • 举报
回复
IE
模态窗口+Iframe可以

参考FortuneBase
参考地址www.cnblogs.com/mail-ricklee
xuyiazl 2010-03-15
  • 打赏
  • 举报
回复
同步必须需要对方提供接口哈,,,不可能自己开发个网站 来修改腾讯的网站吧。没权限的哦。
浴火_凤凰 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 leonbingo 的回复:]
其实就是在aaa登录后,登录状态同步到bbb的问题。方法还是有的,就是可能会有安全隐患,我们这样设计,基本原理都是在aaa登录的时候将登录的状态传递到bbb,这里有一个方法,放置一个iframe,在你登录成功后将src改变成bbb的某个页面,这个页面可以通过url接受参数,然后让b页面也验证一次(防止b不经登录就直接登入的漏洞),但这样需要传递下密码的,道理基本这样吧。
[/Quote]
但是怎样实现实时登录状态同步到bbb 啊?
我的bbb中的页面是使用Window.open打开的一个独立窗口,
不断刷页面就怕会丢失一些JS对象啊!
因为不断刷页面就相当于总是初始化JS嘛!
还有一点比较麻烦,我的b页面关键还有一个onbeforeunload事件啊!
刷页面总是会有提示的。
浴火_凤凰 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kdalan 的回复:]
我现在在www.aaa.com/aaa.aspx插入了一个JS文件,
地址为www.bbb.com/js/insert.js
要实现的功能是单击www.aaa.com/aaa.aspx页面中的一个按钮之后,
弹出一个www.bbb.com/con/asp/bbb.aspx文件,
插入insert.js的目的就是在打开bbb.aspx页面的时候可以传一些参数给
bbb.aspx页面,比如插……
[/Quote]
这个思路我也想过,好像说反了吧??
是让bbb下的页面调用aaa下的页面吧?
不过恐怕不行,因为aaa下的页面不在我的控制范围之内。

我只提供一个外部JS文件而已,就是类似于一个第三方服务。

浴火_凤凰 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 symbol_bc 的回复:]
确实看的有些出入,不好意思,你说的是单点登录的功能。
bs实现a系统退出,b立即感知的话好像没有什么好方法,而且你两个网站是一级域名,cookie就不能跨域了,
只能设一个服务端,不论哪个系统登录都先去服务端校验,在服务端设一个session级别的东西监测。
要是多个系统还有令牌环什么的,单点登录是一个不好实现的东西。
[/Quote]
看来我的问题很难啊!!!
雨网科技 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 leonbingo 的回复:]
其实就是在aaa登录后,登录状态同步到bbb的问题。方法还是有的,就是可能会有安全隐患,我们这样设计,基本原理都是在aaa登录的时候将登录的状态传递到bbb,这里有一个方法,放置一个iframe,在你登录成功后将src改变成bbb的某个页面,这个页面可以通过url接受参数,然后让b页面也验证一次(防止b不经登录就直接登入的漏洞),但这样需要传递下密码的,道理基本这样吧。
[/Quote]

基本上他说的这样就可以了;如果你想更安全些就用webservice ,用webservice 接收值后保存COOKIE就可以了
leonbingo 2010-03-15
  • 打赏
  • 举报
回复
其实就是在aaa登录后,登录状态同步到bbb的问题。方法还是有的,就是可能会有安全隐患,我们这样设计,基本原理都是在aaa登录的时候将登录的状态传递到bbb,这里有一个方法,放置一个iframe,在你登录成功后将src改变成bbb的某个页面,这个页面可以通过url接受参数,然后让b页面也验证一次(防止b不经登录就直接登入的漏洞),但这样需要传递下密码的,道理基本这样吧。
暴走的车轮 2010-03-15
  • 打赏
  • 举报
回复
我现在在www.aaa.com/aaa.aspx插入了一个JS文件,
地址为www.bbb.com/js/insert.js
要实现的功能是单击www.aaa.com/aaa.aspx页面中的一个按钮之后,
弹出一个www.bbb.com/con/asp/bbb.aspx文件,
插入insert.js的目的就是在打开bbb.aspx页面的时候可以传一些参数给
bbb.aspx页面,比如插入页面的cookie,这样就能实现
如果www.aaa.com/aaa.aspx页面的用户已经登录,就是说写了cookie
那样在打开www.bbb.com/con/asp/bbb.aspx页面的时候,此页面的用户就会自动登录。
但是现在领导要求要实时的检测。
就是说如果www.aaa.com/aaa.aspx页面的用户退出了或者换了另一个,
则www.bbb.com/con/asp/bbb.aspx页面的用户也必须实时的退出或者换另一个。

-----------------------------------------------------------------------------------
其实这个问题很容易解决。因为js的调用是允许跨域的。你在aaa.com里面调用bbb.com里的JS是可以的。所以,你就可以在bbb.com里面用一个单独的aspx页面生成js格式的文件,让aaa.com调用即可。参数也照样传递。比如aaa.com里面这样写<script type="text/javascript" src="http://www.bbb.com/a.aspx?userID=123&action=login"></script>,这样参数就可以传递到bbb.com的a.aspx里处理就好了。这里注意a.aspx一定要是生成的js格式才可以调用,否则浏览器会报跨域安全错误。另外一种方法就是用json也可以实现 原理差不多....
symbol_bc 2010-03-15
  • 打赏
  • 举报
回复
确实看的有些出入,不好意思,你说的是单点登录的功能。
bs实现a系统退出,b立即感知的话好像没有什么好方法,而且你两个网站是一级域名,cookie就不能跨域了,
只能设一个服务端,不论哪个系统登录都先去服务端校验,在服务端设一个session级别的东西监测。
要是多个系统还有令牌环什么的,单点登录是一个不好实现的东西。
加载更多回复(2)

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧