关于知道其他平台的用户名和密码,嵌入自己的系统直接连接过去
1、先要分析对方系统是如何登录的,有的是通过表单提交用户名和密码,就直接进入到主页了,有的是通过接口登录,登录成功以后再重定向到主页;还有其他,这个直接连接到对方系统实现的复杂度跟目标系统有关。
2、如果是表单方式提交,直接得到action地址和用户名密码name,直接写入<a>,<iframe>标签,进行尝试,有可能就直接链接过去了(只是可能),注意新版本谷歌的SameSite问题;
3、如果是先通过接口登录,然后再重定向到主页,这个时候,在你自己的系统中进行模拟登录,然后重定向,可能成功,也可能失败,这个也是跟对方系统有关的,是否跨域问题。
如果有跨域限制(跨域是浏览器的安全考虑,其实请求是成功了的,但是因为跨域,浏览器不会把这部分数据拿出来用而已),这个在前端好像不能解决,解决跨域主要是refer头,但是直接在ajax设置refer头,浏览器不认同你的修改;
这个时候就考虑进行后端处理,搭建一个nginx服务,你所有的页面、接口请求都指向nginx,然后nginx进行分流,如果是你自己的系统路径,就往你自己的应用上分发,如果是目标系统的路径就往目标系统进行分发,这个时候,你的请求就不会出现跨域了,因为你所有的请求都是指向nginx;
4、如果带有一些验证码之类的,暂时没考虑到;
给一个demo的关键代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="./jquery.min.js"></script> </head> <body> <a href="javascript:void(0)" onclick="clickbtn()">跳转到xxl-job管理中心</a> </body> <script type="text/javascript"> function clickbtn(){ $.ajax({ type: "post", url: "http://localhost/xxl-job-admin/login", dataType: "json", data: { userName: "admin", password: "xxxxxxxx" }, success: function (data) { window.location.href="http://localhost/xxl-job-admin/"; },error:function(error){ console.log(error); } }); } </script> </html>
nginx.conf的配置片段
location / { proxy_pass http://localhost:8080/; #自己系统地址 } location /xxl-job-admin/ { proxy_pass http://10.xx.xx.xxx:8001/xxl-job-admin/; #目标系统地址 }
nginx起搬运工的作用,它不会进行跨域验证。