RT,领导要求把一个外部系统的主页面嵌套到我们的系统,跳过其登陆页面(已知用户名密码),即点击链接后就像访问本系统的一个页面一样使用外部系统,本人尝试了如下方法,没有成功:
使用<iframe>标签,构造cookie注入用户名密码,但可能因为cookie的domain不一致,没有实现。
本人是个新入职的编程菜鸟,求各位大牛指点迷津,在此感激不尽!!
建一个页面,里面按系统登录要求提供登录的用户名和密码等信息,用脚本在页面onload时自动提交表单到系统的登录入口,应该可以解决问题。
我按照您的方法尝试了下,遇到了如下问题:
1 <script> 2 function m1() { 3 var frame= window.top.document.getElementById("outFrame").contentDocument; 4 var userName= frame.document.getElementById("loginUserName"); 5 userName.value = "admin"; 6 } 7 </script>
<iframe id="outFrame", height=600px, width=100%, src="http://10.57.7.41/doc/page/login.asp" />
说明:loginUserName为外部页面中包含的<input>标签ID
问题:在JS代码运行至第3行时,出现“拒绝访问”的错误,我百度了下,说是因为跨域访问的原因,那么如何解决这个问题呢?谢谢!
@kamity: 你可能理解错我的意思了,我的意思是直接在自己的网站里建一个页面,在页面Onload时把登录信息提交到外部网站的登录页面地址,而不是直接用脚本去操作外部网页。
我想你不直接引用外部系统登陆界面跳转后的页面的原因是它之后的页面是有引用用户名、密码信息的(无论存在cookie还是session还是什么),如果没有,那简单了。直接引用其跳转后地址。如果是,那你是否可以尝试下在代码里构造用户名密码的信息,而不是直接用标签?!
不知道对你有没有帮助,欢迎追问。
有道理
不错
@xupeng: 好
能动外部系统的代码不? 如果不能的话,可以在你的iframe里加载外部系统的用户名密码提交事件.这样访问自己的主页后就自动的登录了外部系统。
iframe标签内部的标签元素(即外部页面)是在运行时动态生成的,而我自己页面的<iframe>中只有一个src链接而已(我是这样理解的,不知道有没有错),那么如何在这个动态生成的用户名密码<input>标签中注入用户名密码并提交呢?
@kamity: 楼下已经回答了。用js写
@kamity: 你想想哪些能登录邮箱是怎么做的么。
楼主,这个问题你解决了么。我最近也在纠结这个,不知道怎么弄!求指导。。。