Jquery load()避免没有YQL的跨域问题
我需要在我的页面中插入来自外部url的HTML片段,我使用Yahoo proxy编写了以下简单函数来解决跨域问题:Jquery load()避免没有YQL的跨域问题,jquery,load,cross-domain,Jquery,Load,Cross Domain,我需要在我的页面中插入来自外部url的HTML片段,我使用Yahoo proxy编写了以下简单函数来解决跨域问题: function crossDomainAjaxLoad(url, selector) { container = $('#container'); if (url.match('^http')) { $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%2
function crossDomainAjaxLoad(url, selector) {
container = $('#container');
if (url.match('^http')) {
$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + encodeURIComponent(url) + "%22&format=xml'&callback=?", function (data) {
if (data.results[0]) {
var data = filterData(data.results[0]);
container.html(data);
} else {
var errormsg = '<p>Error: could not load the page.</p>';
container.html(errormsg);
}
});
} else {
container.load(url, function () {});
}
}
function filterData(data) {
data = data.replace(/<?\/body[^>]*>/g, '');
data = data.replace(/[\r|\n]+/g, '');
data = data.replace(/<--[\S\s]*?-->/g, '');
data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g, '');
data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g, '');
data = data.replace(/<script.*\/>/, '');
return data;
}
这非常有效,但我发现一些域拒绝YQL请求,我可以想象这种方法也存在安全问题
所以我想知道是否有一个跨域的解决方案,用于在jQuery中加载而不使用YQL。这些是代理服务器,而不是插件,也可以帮助处理跨域请求: 通过whateverorigin从google.com获取数据: 或者您可以在任何地方通过cors完成: 我强烈建议你看看这篇文章:在那里你可以找到克服跨域障碍的其他方法 有一些jQuery插件可以帮助处理跨域请求:
这些代理服务器不是插件,也可以帮助处理跨域请求: 通过whateverorigin从google.com获取数据: 或者您可以在任何地方通过cors完成: 我强烈建议你看看这篇文章:在那里你可以找到克服跨域障碍的其他方法 有一些jQuery插件可以帮助处理跨域请求:
$.getJSON('http://whateverorigin.org/get?url=' + /*proxy server*/
encodeURIComponent('http://google.com') + '&callback=?',
function (data){
console.log("> ", data);
$("#viewer").html(data.contents);
});
$.get(
'http://cors-anywhere.herokuapp.com/' + /*proxy server*/
'http://en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});