Ajax 来自客户端脚本的跨域内容使用(安全问题)

Ajax 来自客户端脚本的跨域内容使用(安全问题),ajax,json,cross-domain,Ajax,Json,Cross Domain,我正在尝试使用jQuery加载函数将一些外部内容加载到页面上的div。load方法对本地内容可以正常工作,但如果您想要域外的内容,它将无法工作 $("#result").load("http://extrnal.com/page.htm #data); (它实际上可以在IE中使用安全警告功能,但完全拒绝在Chrome中使用)。jQuery文档说这是正确的,因为跨域内容由于安全原因而受到限制。如果使用.getJSON方法,则会收到相同的警告 好的,在谷歌搜索了一段时间后,我发现了使用YQL加载内

我正在尝试使用jQuery加载函数将一些外部内容加载到页面上的div。load方法对本地内容可以正常工作,但如果您想要域外的内容,它将无法工作

$("#result").load("http://extrnal.com/page.htm #data);
(它实际上可以在IE中使用安全警告功能,但完全拒绝在Chrome中使用)。jQuery文档说这是正确的,因为跨域内容由于安全原因而受到限制。如果使用.getJSON方法,则会收到相同的警告

好的,在谷歌搜索了一段时间后,我发现了使用YQL加载内容的非常有趣的方法,我尝试了一些示例,如下所示:

        var request = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo%22&format=json&diagnostics=true&callback=?";
        $.getJSON(request, function (json) {
            alert(json);
        }
       );
callback({key:value,etc:1})
这真的很有效

我现在不明白的是,这也是跨域资源,但浏览器(IE和Chrome)可以正常工作吗

有什么区别?我错过了什么


谢谢

您从YQL获得的结果是JSON格式的,这种格式允许跨站点AJAX调用。这与允许您通过JSON(即twitter API)与外部站点的web服务通信的机制相同


此处的详细信息-

您可以在外部站点上创建JSON,如下所示:

        var request = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo%22&format=json&diagnostics=true&callback=?";
        $.getJSON(request, function (json) {
            alert(json);
        }
       );
callback({key:value,etc:1})
定义

function callback(json) {
   ..here is processing..
}

谢谢你的回答,但不幸的是,这两个问题都没有回答我最初的问题

我已经查看了有关stackoverflow的相关问题(我知道我需要先这样做),并找到了此类行为的原因

第一个代码snipset使用AJAX/JSON检索数据,这是允许的,因为同源策略。但对YQL的请求使用JSONP,这是可以的

JSONP是我不知道的东西,这就是为什么我没有取消它的行为

关于JSONP的介绍信息可以在这里找到: