场景
有几十个后台,每次都需要找地址,再输入账号登录且所有的后台账号密码相同,仅仅是地址不同。且后台都是在不同的服务器上,需要的仅仅是一个跳板机管理而已
实现思路
将地址分类,利用select下拉框决定地址,添加输入框接收账号密码 ,提交的时候向选定地址跳转并实现自动登录到管理页面
具体实现
地址选定很简单就不赘述了,主要在如何发送请求并跳转,java是不能直接像浏览器直接请求然后跳转,而且会有各种问题,跨域,session过期等等,如果有人知道怎么用java实现麻烦教我一下。先看关键代码 js,利用js伪造表单提交
function sta(data){
window.location=data;
function PostSubmit() {
var postUrl = data;//提交地址
var loginName = document.getElementById("loginName").value;//获取账号
var password=document.getElementById("password").value;//获取密码
var ExportForm = document.createElement("FORM");//创建一个表单属性
document.body.appendChild(ExportForm);//添加一个节点
ExportForm.method = "POST";//设置表单的提交方式
var newElement = document.createElement("input");//创建输入框
newElement.setAttribute("name", "loginName");//设置输入框属性,这个name 一般情况下要和原登录后台接收账号的输入框相同
newElement.setAttribute("type", "hidden");//设置类型
var newElement2 = document.createElement("input");//同理
newElement2.setAttribute("name", "password");
newElement2.setAttribute("type", "hidden");
ExportForm.appendChild(newElement);//把属性添加进表单
ExportForm.appendChild(newElement2);
newElement.value = loginName;//设置属性值
newElement2.value = password;
ExportForm.action = postUrl;//提交地址
ExportForm.submit();//提交动作
};
这是什么原理呢?
其实也很简单,仔细分析下,请求到最后登录的流程,简单来说就几步,从页面接收到需要的参数,然后通过Ajax或者form表单等等提交,再由后台服务器对数据进行校验,在跳转或者其他操作。再简化点,我们需要做的就是获取参数再提交,参数获取好解决,重点在怎么提交。现在就直接在浏览器模拟出表单及参数提交等要素,就能成功发送数据外加跳转。
java模拟post提交也是同理,但是java模拟提交时只能获得响应内容,无法对浏览器的跳转等操作进行相同的复制操作。
如果有缺点,或者更好的解决办法务必联系我,谢谢