如何使用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,该怎么办?
答案 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/