【问题标题】:javascript get html file from online linkjavascript从在线链接获取html文件
【发布时间】:2015-07-19 02:59:31
【问题描述】:

我想使用 xmlhttprequest 和 javascript 调用 html 在线链接,这是我的代码 但是当代码到达 xmlhttp.open 时它停止并且不会继续执行

function loadXMLDoc(size,downloadfromurl) {
    var xmlhttp;

    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function () {

        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var temp = xmlhttp.responseText;

        }
    }

    xmlhttp.open("GET", "http://app.arsel.qa/mobileappspeedtest/samples/256.htm?n=" +  Math.random(), false);

    xmlhttp.send(null);

}

【问题讨论】:

  • 上述目标不支持 CORS,因此由于同源策略限制,您无法向资源发出跨域 ajax 请求
  • 是的,我认为我必须通过此链接在 Web 服务中启用 CORS asp.net/web-api/overview/security/…

标签: javascript jquery html xmlhttprequest


【解决方案1】:

您可以使用 JSONP 来克服跨域障碍。

$.ajax({
  type:'GET',
  dataType:'jsonp',
  jsonp: "jsonp",
  url:"http://yoururl.com?callback=callbackFunction"
});


function callbackFunction(data){
  //you can process the data here
  console.log(date)
}

【讨论】:

    【解决方案2】:

    您正在做的是对该页面的实际 AJAX 请求。 出于安全原因,默认情况下不允许跨域 AJAX 请求。 但是,有几种方法可以执行跨域请求,您可以看看 jQuery 是如何做到的,这样您就不必使用纯 JavaScript 重新发明轮子了。 This article 应该会有所帮助。

    无论如何,如果你真的想爬取那个页面,有大量的开源库用于服务器端脚本语言,如 Java、PHP、Node.js 等,它们在收集内容、解析 HTML 等方面非常有用开,取决于你的需要。

    【讨论】:

    • 如果您将“crossDomain”设置为 true 并使用 JSONP 执行跨域 ajax 请求并检查您的请求实际到达的位置,您会看到它到达第三方服务器,而不是直接到达目的地你设置为“url”。如果我没记错的话,它实际上是一个谷歌服务器,但我可能对最后一部分有误。
    • 据我所知,jQuery 要求服务器将请求包装在一个回调函数中,然后 jquery 将其插入头部。它不联系任何其他服务。
    • 我记得不久前看到过这个。它有效,但请求通过某种代理。根据本文,有多种使用 jquery 执行跨域 ajax 的方法。 jquery-howto.blogspot.in/2013/09/…
    • 如果您访问的服务器不执行 CORS/JSONP 但 jQuery 不执行任何操作,您可以并且必须创建代理。这完全取决于您或您决定使用的第 3 方代理
    • 老实说,我不记得我配置它的确切方式,但它只是通过那个代理。很抱歉从一开始就没有明确说明。干杯!
    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2020-06-30
    • 2015-01-03
    • 2015-06-22
    相关资源
    最近更新 更多