如何使用jQuery AJAX加载跨域html页面?

时间:2014-09-07 05:16:55

标签: jquery ajax jquery-plugins cross-browser cross-domain

如何使用jQuery AJAX加载跨域HTML页面?

假设我想使用jQuery AJAX在我的域外获取一个页面:

$.get('http://www.domain.com/mypage.html', function(data) {
  alert(data);
});

我可能会收到此错误消息:

  

XMLHttpRequest无法加载http://www.domain.com/path/filename。起源   Access-Control-Allow-Origin不允许使用null。

由于Same-origin policy,我们无法使用AJAX加载跨域页面。

我可以尝试使用'jsonp'来绕过这个限制:

$.ajax({
  type:     "GET",
  url:      url,
  dataType: "jsonp",
  success: function(data){
    console.log(data);
  }
});

但如果此网站不支持'jsonp'怎么办?这可能是一个问题。

如果我只想阅读外部页面并解析其HTML,该怎么办?

2 个答案:

答案 0 :(得分:0)

我知道这是一篇旧帖子。但是,我希望这会帮助那些正在寻找同样的人。

只是您不能 - 同源政策或您需要为QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"commands.txt", tr("TXT files (*.txt)")); 设置CORS标头

但是,如果您只想向网页提取外部网页内容,则可以采取以下解决方法:

在服务器中创建一个端点,以返回给定外部网址的HTML内容。(因为您无法获取浏览器的外部内容 - 同源策略< / em>的)

<强> JS:

www.domain.com

Easiest way to read from a URL into a string in .NET - 可以使用此功能创建var encodedUrl = encodeURIComponent('http://www.domain.com/mypage.html'); $.get('http://www.yourdomain.com/getcontent?url=' + encodedUrl, function(data) { console.log(data); }); 端点

答案 1 :(得分:-3)

您可以使用&#39; AJAX Cross Origin&#39;一个jQuery插件,用于加载跨域HTML页面。 AJAX Cross Origin是一个允许Cross Origin AJAX请求的jQuery插件。 使用此插件,我们可以轻松绕过Same-origin policy并执行跨域请求。

使用起来非常简单:

   $.ajax({
        crossOrigin: true,
        url: url,
        success: function(data) {
            console.log(data);
        }
    });

您可以在此处详细了解:http://www.ajax-cross-origin.com/