两个不同WEB系统之间限定条件的信息交互问题

时间:2021-03-07 21:13:41
1. 设存在两个web项目,分别是ProjectA和ProjectB,ProjectB不可修改,ProjectA可任意修改。
2. ProjectA存在a1页面,ProjectB存在b1页面。
3. b1页面实现的是账号、密码登陆功能。
4. a1页面存在一个按钮btn1,点击btn1则打开新的标签页且链接到b1页面,同时在a1页面中弹出提示“未登陆”。
5. 在新的标签页链接到的b1页面上登陆成功后,a1页面提示从“未登陆”转换为“登陆成功”。
6. 问如何实现以上功能,最好可以给出详细的算法和技术,再次强调注意几个限定的条件:
          a) ProjectA和ProjectB是两个不同项目,同时部署在tomcat上。 
          b) ProjectB不可修改。 
          c) 是否能在JavaScript上寻找可能性,还是浏览器插件。
7. 感谢提供想法的各位网友!

13 个解决方案

#1


如果跨域的话就很难办到了。
 如果能修改projectB 可以用webservice

 用ajax提交B的登录,或许能得到返回信息,但无法获知用户名等session信息。

#2


引用 1 楼 cb1156 的回复:
如果跨域的话就很难办到了。
 如果能修改projectB 可以用webservice

 用ajax提交B的登录,或许能得到返回信息,但无法获知用户名等session信息。

ProjectB绝对不可修改,有其他可行的方法吗?

#3


4. a1页面存在一个按钮btn1,点击btn1则打开新的标签页且链接到b1页面,同时在a1页面中弹出提示“未登陆”。
这是不可能实现的,打开新标签页需要利用 a 标签跳转,即使是不跨域,也不可能在两个标签页间进行操作 

#4


引用 3 楼 xuzuning 的回复:
4. a1页面存在一个按钮btn1,点击btn1则打开新的标签页且链接到b1页面,同时在a1页面中弹出提示“未登陆”。
这是不可能实现的,打开新标签页需要利用 a 标签跳转,即使是不跨域,也不可能在两个标签页间进行操作 

用JavaScript window对象的open方法和alert方法就可实现。Project B不可修改,只能在浏览器端的技术进行联想。这显然不是一个简单对web技术应用的问题,我想知道大家有什么好的解决思路。比如说运行插件,对http数据包的数据进行监听和分析等。

#5


window.open 方法打开的不是 新标签页,而是弹出式窗口。可能碰巧你的浏览器是在 新标签页 打开了
但是如果 Project B 是透过 Project A 的服务器打开的,而你的浏览器又支持 websock 的话,那情况就大不一样了

#6


在A里面模拟B的登录,用AJAX来提交,可以得到返回信息啊,成功了就把用户名加入session

#7


Project B  有回调的url还可以在回调url 处理。
但是新标签打开,js,控制不了浏览器标签的。 
弹出div,内嵌 iframe 应该可以

#8


引用 5 楼 xuzuning 的回复:
window.open 方法打开的不是 新标签页,而是弹出式窗口。可能碰巧你的浏览器是在 新标签页 打开了
但是如果 Project B 是透过 Project A 的服务器打开的,而你的浏览器又支持 websock 的话,那情况就大不一样了


引用 6 楼 cb1156 的回复:
在A里面模拟B的登录,用AJAX来提交,可以得到返回信息啊,成功了就把用户名加入session


引用 7 楼 hch126163 的回复:
Project B  有回调的url还可以在回调url 处理。
但是新标签打开,js,控制不了浏览器标签的。 
弹出div,内嵌 iframe 应该可以


先抛开JavaScript的问题不说,重点是Project B不可修改的问题,谁能给出一个可行的算法啊?
起码提供个思路吧!感谢各位大神了。

#9


不是说了么。应该是可行的。
你在A里面做一个登录页面。然后AJAX提交到B,会得到一个返回信息。根据这个信息判断是否在B登录成功。然后在做后续处理。。

#10


引用 9 楼 cb1156 的回复:
不是说了么。应该是可行的。
你在A里面做一个登录页面。然后AJAX提交到B,会得到一个返回信息。根据这个信息判断是否在B登录成功。然后在做后续处理。。

我明白你的意思了,那如果Project B里面还有一个验证码呢?

#11


用iframe做代理。。a iframe引入b的一个页面做代理,参考: javascript通过iframe加载同源代理页面实现*域跨域操作


或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/

#12


引用 11 楼 showbo 的回复:
用iframe做代理。。a iframe引入b的一个页面做代理,参考: javascript通过iframe加载同源代理页面实现*域跨域操作


或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/

看过你第一种提议,基本看懂原理。是实现了类似跨域的交互,我也不知道该如何定义这种做法。
但是起码没有满足Project B不能修改的条件。也许有可能是我没有理解透彻。能不能有针对性地对题目进行分析解释。感谢!
第二种提议还没来得及看。

#13


引用 12 楼 q234556227 的回复:
Quote: 引用 11 楼 showbo 的回复:

用iframe做代理。。a iframe引入b的一个页面做代理,参考: javascript通过iframe加载同源代理页面实现*域跨域操作


或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/

看过你第一种提议,基本看懂原理。是实现了类似跨域的交互,我也不知道该如何定义这种做法。
但是起码没有满足Project B不能修改的条件。也许有可能是我没有理解透彻。能不能有针对性地对题目进行分析解释。感谢!
第二种提议还没来得及看。

如果你的b无法修改就没办法跨域了。。上面2中方法你都要修改过b

否则你就要在a中做好b的代理,而且要记录相关b的登陆session对应的cookie值之类的。

#1


如果跨域的话就很难办到了。
 如果能修改projectB 可以用webservice

 用ajax提交B的登录,或许能得到返回信息,但无法获知用户名等session信息。

#2


引用 1 楼 cb1156 的回复:
如果跨域的话就很难办到了。
 如果能修改projectB 可以用webservice

 用ajax提交B的登录,或许能得到返回信息,但无法获知用户名等session信息。

ProjectB绝对不可修改,有其他可行的方法吗?

#3


4. a1页面存在一个按钮btn1,点击btn1则打开新的标签页且链接到b1页面,同时在a1页面中弹出提示“未登陆”。
这是不可能实现的,打开新标签页需要利用 a 标签跳转,即使是不跨域,也不可能在两个标签页间进行操作 

#4


引用 3 楼 xuzuning 的回复:
4. a1页面存在一个按钮btn1,点击btn1则打开新的标签页且链接到b1页面,同时在a1页面中弹出提示“未登陆”。
这是不可能实现的,打开新标签页需要利用 a 标签跳转,即使是不跨域,也不可能在两个标签页间进行操作 

用JavaScript window对象的open方法和alert方法就可实现。Project B不可修改,只能在浏览器端的技术进行联想。这显然不是一个简单对web技术应用的问题,我想知道大家有什么好的解决思路。比如说运行插件,对http数据包的数据进行监听和分析等。

#5


window.open 方法打开的不是 新标签页,而是弹出式窗口。可能碰巧你的浏览器是在 新标签页 打开了
但是如果 Project B 是透过 Project A 的服务器打开的,而你的浏览器又支持 websock 的话,那情况就大不一样了

#6


在A里面模拟B的登录,用AJAX来提交,可以得到返回信息啊,成功了就把用户名加入session

#7


Project B  有回调的url还可以在回调url 处理。
但是新标签打开,js,控制不了浏览器标签的。 
弹出div,内嵌 iframe 应该可以

#8


引用 5 楼 xuzuning 的回复:
window.open 方法打开的不是 新标签页,而是弹出式窗口。可能碰巧你的浏览器是在 新标签页 打开了
但是如果 Project B 是透过 Project A 的服务器打开的,而你的浏览器又支持 websock 的话,那情况就大不一样了


引用 6 楼 cb1156 的回复:
在A里面模拟B的登录,用AJAX来提交,可以得到返回信息啊,成功了就把用户名加入session


引用 7 楼 hch126163 的回复:
Project B  有回调的url还可以在回调url 处理。
但是新标签打开,js,控制不了浏览器标签的。 
弹出div,内嵌 iframe 应该可以


先抛开JavaScript的问题不说,重点是Project B不可修改的问题,谁能给出一个可行的算法啊?
起码提供个思路吧!感谢各位大神了。

#9


不是说了么。应该是可行的。
你在A里面做一个登录页面。然后AJAX提交到B,会得到一个返回信息。根据这个信息判断是否在B登录成功。然后在做后续处理。。

#10


引用 9 楼 cb1156 的回复:
不是说了么。应该是可行的。
你在A里面做一个登录页面。然后AJAX提交到B,会得到一个返回信息。根据这个信息判断是否在B登录成功。然后在做后续处理。。

我明白你的意思了,那如果Project B里面还有一个验证码呢?

#11


用iframe做代理。。a iframe引入b的一个页面做代理,参考: javascript通过iframe加载同源代理页面实现*域跨域操作


或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/

#12


引用 11 楼 showbo 的回复:
用iframe做代理。。a iframe引入b的一个页面做代理,参考: javascript通过iframe加载同源代理页面实现*域跨域操作


或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/

看过你第一种提议,基本看懂原理。是实现了类似跨域的交互,我也不知道该如何定义这种做法。
但是起码没有满足Project B不能修改的条件。也许有可能是我没有理解透彻。能不能有针对性地对题目进行分析解释。感谢!
第二种提议还没来得及看。

#13


引用 12 楼 q234556227 的回复:
Quote: 引用 11 楼 showbo 的回复:

用iframe做代理。。a iframe引入b的一个页面做代理,参考: javascript通过iframe加载同源代理页面实现*域跨域操作


或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/

看过你第一种提议,基本看懂原理。是实现了类似跨域的交互,我也不知道该如何定义这种做法。
但是起码没有满足Project B不能修改的条件。也许有可能是我没有理解透彻。能不能有针对性地对题目进行分析解释。感谢!
第二种提议还没来得及看。

如果你的b无法修改就没办法跨域了。。上面2中方法你都要修改过b

否则你就要在a中做好b的代理,而且要记录相关b的登陆session对应的cookie值之类的。