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

Zhang_CaCa 2014-07-06 02:43:16
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. 感谢提供想法的各位网友!
...全文
252 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2014-07-07
  • 打赏
  • 举报
回复
用iframe做代理。。a iframe引入b的一个页面做代理,参考:javascript通过iframe加载同源代理页面实现顶级域跨域操作 或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/
Zhang_CaCa 2014-07-07
  • 打赏
  • 举报
回复
引用 9 楼 cb1156 的回复:
不是说了么。应该是可行的。 你在A里面做一个登录页面。然后AJAX提交到B,会得到一个返回信息。根据这个信息判断是否在B登录成功。然后在做后续处理。。
我明白你的意思了,那如果Project B里面还有一个验证码呢?
cb1156 2014-07-07
  • 打赏
  • 举报
回复
不是说了么。应该是可行的。 你在A里面做一个登录页面。然后AJAX提交到B,会得到一个返回信息。根据这个信息判断是否在B登录成功。然后在做后续处理。。
Zhang_CaCa 2014-07-07
  • 打赏
  • 举报
回复
引用 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不可修改的问题,谁能给出一个可行的算法啊? 起码提供个思路吧!感谢各位大神了。
hch126163 2014-07-07
  • 打赏
  • 举报
回复
Project B 有回调的url还可以在回调url 处理。 但是新标签打开,js,控制不了浏览器标签的。 弹出div,内嵌 iframe 应该可以
cb1156 2014-07-07
  • 打赏
  • 举报
回复
在A里面模拟B的登录,用AJAX来提交,可以得到返回信息啊,成功了就把用户名加入session
Go 旅城通票 2014-07-07
  • 打赏
  • 举报
回复
引用 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不能修改的条件。也许有可能是我没有理解透彻。能不能有针对性地对题目进行分析解释。感谢! 第二种提议还没来得及看。 [/quote] 如果你的b无法修改就没办法跨域了。。上面2中方法你都要修改过b 否则你就要在a中做好b的代理,而且要记录相关b的登陆session对应的cookie值之类的。
Zhang_CaCa 2014-07-07
  • 打赏
  • 举报
回复
引用 11 楼 showbo 的回复:
用iframe做代理。。a iframe引入b的一个页面做代理,参考:javascript通过iframe加载同源代理页面实现顶级域跨域操作 或者用html5的postMessage也可以进行交互:http://www.ibm.com/developerworks/cn/web/1301_jiangjj_html5message/
看过你第一种提议,基本看懂原理。是实现了类似跨域的交互,我也不知道该如何定义这种做法。 但是起码没有满足Project B不能修改的条件。也许有可能是我没有理解透彻。能不能有针对性地对题目进行分析解释。感谢! 第二种提议还没来得及看。
xuzuning 2014-07-06
  • 打赏
  • 举报
回复
window.open 方法打开的不是 新标签页,而是弹出式窗口。可能碰巧你的浏览器是在 新标签页 打开了 但是如果 Project B 是透过 Project A 的服务器打开的,而你的浏览器又支持 websock 的话,那情况就大不一样了
Zhang_CaCa 2014-07-06
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
4. a1页面存在一个按钮btn1,点击btn1则打开新的标签页且链接到b1页面,同时在a1页面中弹出提示“未登陆”。 这是不可能实现的,打开新标签页需要利用 a 标签跳转,即使是不跨域,也不可能在两个标签页间进行操作
用JavaScript window对象的open方法和alert方法就可实现。Project B不可修改,只能在浏览器端的技术进行联想。这显然不是一个简单对web技术应用的问题,我想知道大家有什么好的解决思路。比如说运行插件,对http数据包的数据进行监听和分析等。
xuzuning 2014-07-06
  • 打赏
  • 举报
回复
4. a1页面存在一个按钮btn1,点击btn1则打开新的标签页且链接到b1页面,同时在a1页面中弹出提示“未登陆”。 这是不可能实现的,打开新标签页需要利用 a 标签跳转,即使是不跨域,也不可能在两个标签页间进行操作
Zhang_CaCa 2014-07-06
  • 打赏
  • 举报
回复
引用 1 楼 cb1156 的回复:
如果跨域的话就很难办到了。 如果能修改projectB 可以用webservice 用ajax提交B的登录,或许能得到返回信息,但无法获知用户名等session信息。
ProjectB绝对不可修改,有其他可行的方法吗?
cb1156 2014-07-06
  • 打赏
  • 举报
回复
如果跨域的话就很难办到了。 如果能修改projectB 可以用webservice 用ajax提交B的登录,或许能得到返回信息,但无法获知用户名等session信息。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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