我有大约30个设备网页(所有超级类似的基本html),我正在尝试自动化一些测试。
设备正在托管一个index.cgi来公开设置(基本上是一堆路由器)。
我一直在尝试获取索引页面的HTML - 但是我很难从源代码进行身份验证,以允许ajax调用获得正确的响应。
这是我到目前为止所尝试的内容:
1:
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://1.2.3.4/index.cgi", true);
xhr.withCredentials = true;
xhr.setRequestHeader("Authorization", 'Basic ' + btoa('root:root'));
xhr.onload = function () {
console.log(xhr.responseText);
};
xhr.send();
2:
$.ajax({
xhrFields: {
withCredentials: true
},
headers: { 'Access-Control-Allow-Origin': 'http://whereImCallingFrom.com' },
crossDomain: true,
url: "http://1.2.3.4/index.cgi",
success: function (jsonData) {
console.log(jsonData);
},
error: function (request, textStatus, errorThrown) {
console.log(request.responseText);
console.log(textStatus);
console.log(errorThrown);
},
username: "root",
password: "root"
});
3:
$.ajax({
type: "POST",
xhrFields: {withCredentials: true},
dataType: "xml",
contentType: "text/xml; charset=\"utf-8\"",
url: "http://1.2.3.4/index.cgi",
});
4:
$.ajaxSetup({
crossDomain: true,
xhrFields: {
withCredentials: true
},
username: 'root',
password: 'root'
});
5:
$.get('https://1.2.3.4/eth1.cgi', {
username: 'root',
password: 'root'
}, function (d) {
console.log(d);
}, 'text/html');
6:
$.ajax({
url: 'https://1.2.3.4/eth1.cgi',
username : "root",
password :"root",
type: 'GET',
contentType: 'application/x-www-form-urlencoded',
dataType: "text",
xhrFields:
{
withCredentials: true
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + btoa("root" + ":" + "root"));
}
});
对策: 在某些情况下,我得到 501 ,有些我得到 301 ,有些我得到 200 OK 但我仍然在实际通话中遇到错误。
我不确定在授权方面我缺少什么。在没有修改路由器代码并允许的情况下,我是否正在努力做到这一点?
我试过禁用所有Chrome安全性。基本上任何方式我都可以让它工作得很好。只需在javascript调用中从路由器获取HTML。