通过AJAX跨站点获取页面内容。

时间:2018-01-02 13:25:02

标签: javascript jquery html ajax cors

我有大约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。

0 个答案:

没有答案